ФорумПрограммированиеPHP для идиотов → Как выполнить код и сразу обновить страничку?

Как выполнить код и сразу обновить страничку?

  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 28 февраля 2009 г. 8:49

    Привет. Допустим, я сделал форму для ввода логина и пароля, чтобы зайти на сайт. Как сделать, чтобы после того как php код выполниться (авторизация), сразу произошло обновление странички. Все дело в том, что авторизированным пользователям доступны другие пункты меню.

    А сейчас получается, что пользователь зашел на сайт, ввел логин и пароль, а ему выводится, что вы типа успешно зашли в систему, но пункты меню старые.

    Надеюсь понятно пояснил.
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 28 февраля 2009 г. 9:28, спустя 39 минут 37 секунд

    Авторизация от пыхи?
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 28 февраля 2009 г. 9:34, спустя 5 минут 31 секунду

    да, через POST
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 28 февраля 2009 г. 9:37, спустя 3 минуты 17 секунд

    если вся рега через ajax, то и меню должно обновлятся через ajax.
    если просто, не через ajax, то полюбому после кнопки submit будет редирект на страницу action…
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 28 февраля 2009 г. 10:03, спустя 26 минут 16 секунд

    у меня по простому, не через ajax. Так вот в том то и проблема. Все данные проверяются на страничке action="index.php?mode=3" (допустим). Которая формируется перед проверкой логина и пароля. И даже если авторизация успешно пройдена, то сайт будет формироваться с учетом что это гость. Нужно както после авторизации сразу обновить страничку, чтобы перерисовать сайт потому что у авторизированного пользователя доступны другие пункты меню (профайл например).
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 28 февраля 2009 г. 10:08, спустя 4 минуты 38 секунд

    код в студию
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 28 февраля 2009 г. 10:19, спустя 10 минут 25 секунд

    Это код формы авторизации:


    function autorization_form_func()
    {
       print <<<HERE
     войдите или <a href="index.php?mode=3">зарегистрируйтесь</a><br><br>
    <form action="index.php?mode=4" class="register_form" method="post">

    <p>
    <label>логин:</label>
    <input type="text" size="18" maxlenght="25" value="" name="login"/>
    </p>

    <p>
    <label>пароль:</label>
    <input type="password" size="18" maxlenght="25" value="" name="pass"/>
    </p>

    <button type="submit">войти</button>
    </form>
    HERE;

    }



    action="index.php?mode=4" приведет к выполнению функции:


    //////////////////////////////////
    //
    //  login_func()
    //
    //////////////////////////////////
    function login_func()
    {
       switch($_GET[submode])
       {
           // режим выбора действия
           case 0:
           if (isset($_POST['login']) &#38;&#38; isset($_POST['pass']))
           {
               $login = $_POST['login'];
               $pass = $_POST['pass'];

               $msconnect=connect_to_database("localhost","user_default","******","******");

               // делаем запрос к БД
               // и ищем юзера с таким логином и паролем

               $query = "SELECT `login`
                       FROM `antostudio`.`users`
                       WHERE `login`='{$login}' AND `pass`='{$pass}'
                       LIMIT 1";

               $res = mysql_query($query);

               if(!$res)
                   print "<span class=\"red\">Что-то стряслось в недрах этого сайта…</span><br><br>";
               else
               {
                   // если такой пользователь нашелся
                   if (mysql_num_rows($res) == 1)
                   {
                       // то мы ставим об этом метку в сессии
                       $row = mysql_fetch_assoc($res);
                       $_SESSION['user_login'] = $row['login'];

                       print "<span class=\"green\">Вы успешно вошли в систему</span><br><br>";
                   }
                   else
                   {
                       print "<span class=\"red\">Похоже вы промахнулись с логином или паролем. Проверьте раскладку и попробуйте еще раз.</span><br><br>";
                   }
               }
           }
           break;

           // выйти
           case 1:
           session_destroy();
           print "<span class=\"green\">Вы успешно вышли из системы</span><br><br>";
           break;
       }
    }


    А это код главной странички:


    <body>

    <div id="container" class="container_12">
     <div id="header" class="grid_12">

    // это форма регистрации
     <div id="register" class="grid_3">

    <?
       if (isset($_SESSION['user_login']))
       {
        user_info_func();
       // выводим профайл пользователя
       }
       else
       {
        autorization_form_func();
       // авторизация
       }
    ?>
     </div>

     </div>
     <div id="header_menu" class="grid_12">
    <div id="menu">
    <ul>

    // это список - менюшка. проблема в том, что сначала выводится она, а только потом проверяется логин и пароль

    <?

       $mode=$_GET[mode];
       if (isset($_SESSION['user_login']))
       {
           addMenuItem("главная",0,$mode);
           addMenuItem("новости",1,$mode);
           addMenuItem("админка",2,$mode);
       }
       else
       {
           addMenuItem("главная",0,$mode);
           addMenuItem("новости",1,$mode);
           addMenuItem("регистрация",3,$mode);
       }

    ?>

    </ul>
    </div>
     </div>
     <!–end header–>
     <div id="content" class="grid_12">
       <div id="content_container">


    <?
     switch($mode)
     {
     // главная страница
      case 0:
       welcome_func();
       break;
       case 1:
         read_news_func();
         break;

       case 2:
         edit_news_func();
         break;

       case 3:
         registration_func();
         break;

       case 4:
         login_func();
         break;
     }

    ?>


     <!–end content_container–>
       </div>
     </div>


     <!–end mainContent–>
     <div id="footer" class="grid_12">
       <p align="center" id="footer_text">© 2008-2009 All rights reserved. Все материалы принадлежат их правообладателям. Перепечатка и публикация материалов запрещена.</p>
     </div>
     <!–end footer–>
    </div>
    <!–end container–>
    </body>
    </html>


    Ух, надеюсь разберетесь
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 28 февраля 2009 г. 10:24, спустя 5 минут 31 секунду

    <?php session_start(); ?>
    <html>
    <body>
    Здесь например верх сайта
    <?php
    if (isset($_SESSION['user_id']))
    {
    print '<h1>А здесь допустим профаил</h1>';
    }
    // Выводятся закрытые данные
    ?>
    Здесь низ сайта
    </body>
    </html>

    Причем профаил будет показываться только авторизованым пользователям
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 28 февраля 2009 г. 10:26, спустя 1 минуту 41 секунду

    ваще все ппц, в фциях недолжно быть принтов, шаблон должен вызываться самым последним, в конце выполнения скрипта…
    это и не дает тебе поставить код логина выше менюшки
    предлагаю вместо принтов в фции поставить переменную, в которую собирается текст, и ретурнить её. и в коде вызывать фцию логин перед менюшкой, а результат фции показывать уже в content'е

    еще можно в буфер:
    ob_start();
    login();
    $content = ob_get_clean();

    //menu

    echo $content;
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 28 февраля 2009 г. 10:37, спустя 11 минут 25 секунд

    спасибо, допер!! короче сначала должена проводиться обработка (авторизация), потом формироваться содержание, а потом уже дизайн сайта.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 28 февраля 2009 г. 15:36, спустя 4 часа 58 минут 21 секунду

    ну имучаете же вы детей тут))
    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 28 февраля 2009 г. 15:36, спустя 28 секунд

    айви твоя ава мне напоминает бойца из "черепашки нинзя" он с клюшками для гольфа был и ебашил врагов ими)
    Сапожник без сапог
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 1 марта 2009 г. 0:43, спустя 9 часов 7 минут 3 секунды


    ну имучаете же вы детей тут))

    чувак, посоветуй по теме)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 1 марта 2009 г. 0:52, спустя 8 минут 57 секунд



    ну имучаете же вы детей тут))

    чувак, посоветуй по теме)
    http://ru.php.net/header
    Сапожник без сапог
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 1 марта 2009 г. 1:12, спустя 19 минут 44 секунды




    ну имучаете же вы детей тут))

    чувак, посоветуй по теме)
    http://ru.php.net/header


    Объясни как это с умом применить в моем случае, я не понимаю.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!