За последние 24 часа нас посетили 53427 программистов и 1715 роботов. Сейчас ищут 935 программистов ...

форма в нутри сткипта

Тема в разделе "PHP для новичков", создана пользователем ExDragon, 12 мар 2011.

  1. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    стоит задача авторизировать пользователя.. все действия происходят в одном скрипте
    скажем перемена $username.. её нужно как то получить
    как же отправить данные формы, а точней куда?
    HTML:
    1. <form method = "post" action = "ЧТО СУДА? ИЛИ СУДА НИ ЧЕГО НЕНУЖНО?">
    2. Аккаунт:<br><input name = "user" type = "text" size = "15"><br>
    3. Пароль:<br><input name = "pass" type = "password" size = "15"><br>
    4. <input type = "submit" value = "Вход">
    5. </form>
    повторю всё происходит в одном скрипте...
     
  2. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Код (Text):
    1.  
    2. <form method = "post" action = "">
    3.  Аккаунт:<br><input name = "user" type = "text" size = "15"><br>
    4.  Пароль:<br><input name = "pass" type = "password" size = "15"><br>
    5.  <input type = "submit" value = "Вход">
    6.  </form>
    7.  
    8. $username = $_POST['user'];
     
  3. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    так просто.. =)
    А вот ещё вопрос!
    есть ли функция которая возвращает true если сессия открыта?
     
  4. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    PHP:
    ?
    ну да ладно..
    теперь нужно когда нажимается кнопка "Вход" нужно запустить мою функция LoginTest()
    как? О_0
     
  5. haipret

    haipret Активный пользователь

    С нами с:
    10 мар 2011
    Сообщения:
    18
    Симпатии:
    0
    PHP:
    1. <?php
    2. LoginTest();
     
  6. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    актуально
     
  7. haipret

    haipret Активный пользователь

    С нами с:
    10 мар 2011
    Сообщения:
    18
    Симпатии:
    0
  8. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    а как же тогда узнать открыта ли сессия?!
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а зачем? правильно задайте вопрос и получите ответ =)

    что именно вы хотите?
     
  10. haipret

    haipret Активный пользователь

    С нами с:
    10 мар 2011
    Сообщения:
    18
    Симпатии:
    0
    ExDragonпочитай про $_SESSION
     
  11. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    PHP:
    1. <?php
    2. include 'config.php';
    3.    
    4.     if (isset($_SESSION['login'])){
    5.         if (!$_SESSION['login'] == true){
    6.             $login = 1;
    7.         } else {
    8.             $login = 2;
    9.         }
    10.     } else {
    11.         $login = 2;
    12.     }
    13.  
    14.     if ($login == 1){
    15.         LoginTest();
    16.     }
    17.    
    18.     if ($login == 2){
    19.         LoginOK();
    20.     }
    21. function LoginTest(){
    22. global $login;
    23. global $array;
    24. global $EP;
    25.    
    26.     $userpass = SHA1(strtoupper($_POST['pass']).':'.strtoupper($_POST['pass']));
    27.     $test = mysql_query("SELECT `id`, `username`, `sha_pass_hash` FROM `username`='".$_POST['user']."' AND sha_pass_hash ='".$userpass."'");
    28.    
    29.     if ($array = mysql_fetch_array($test)){
    30.         LoginSave();
    31.     } else {
    32.         $login = 3;
    33.         $EP = '<center><font color = "red">Пароль или аккаунт неверны</font></center>';
    34.         LoginError();
    35.     }
    36. }
    37. function LoginSave(){
    38. global $login;
    39. global $array;
    40. global $_SESSION;
    41.  
    42.     session_start();
    43.     $UserID = $array['id'];
    44.     $UserAcc = $array['username'];
    45.     $_SESSION['userid'] = $UserID;
    46.     $_SESSION['username'] = $UserAcc;
    47.     $_SESSION['login'] = true;
    48.     LoginOK();
    49. }
    50. function LoginExit(){
    51. global $_SESSION;
    52.      unset($_SESSION['userid']);
    53.      unset($_SESSION['username']);
    54.      unset($_SESSION['login']);
    55.      session_destroy();
    56. }
    57. function LoginOK(){
    58.     $sel = 0;
    59.    
    60.     print '<table border = "3" align = "center" width = "1024" height = "500">';
    61.     print '<tr>';
    62.     print '<td width = "150">';
    63.     print '<a href = "acc.php">Главная</a><br>';
    64.     print '<a href = "acc.php?sel=1">Персонажи</a><br>';
    65.     print '<a href = "acc.php?sel=2">Опции</a><br>';
    66.     print '<a href = "acc.php?sel=3">Аукцион</a><br>';
    67.     print '<a href = "acc.php?sel=4">Лоты</a><br>';
    68.     print '<a href = "acc.php?sel=5">Выход</a><br>';
    69.     print '</td>';
    70.     print '<td>';
    71.     print $sel;
    72.     switch($sel){
    73.         case 0:
    74.             print "Главная";
    75.         break;
    76.         case 1:
    77.             print "Персонажи";
    78.         break;
    79.         case 2:
    80.             print "Опции";
    81.         break;
    82.         case 3:
    83.             print "Аукцион";
    84.         break;
    85.         case 4:
    86.             print "Лоты";
    87.         break;
    88.         case 5:
    89.             LoginExit();
    90.         break;
    91.     }
    92.     print '</td>';
    93.     print '</tr>';
    94.     print '</table>';
    95. }
    96. function LoginError(){
    97. global $EP;
    98.  
    99. print '<table border = "3" align = "center" width = "300" height = "500">';
    100. print '<tr>';
    101. print '<td width = "150">';
    102. print $EP;
    103. print '</td>';
    104. print '</tr>';
    105. print '</table>';
    106. }
    107. ?>
    По моей задумки когда $login = 2 значит юзер уже авторизировался LoginOK(), $login = 1 значит не вошёл в систему LoginTest()!
    элемент
    PHP:
    1.     if (isset($_SESSION['login'])){
    2.         if (!$_SESSION['login'] == true){
    3.             $login = 1;
    4.         } else {
    5.             $login = 2;
    6.         }
    7.     } else {
    8.         $login = 2;
    9.     }
    служит для проверки.. тут ошибка! ума не приложу.. как же тогда понять заходил ли юзер или нет?
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    =) лень все смотреть, но чем не устраивает использования ОДНОЙ переменной а не двух. Если в сессии уже есть значение залогинился или нет - то нафик еще одна переменная?
     
  13. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    ррр не получается, после повторного захода ничего не сохраняется! может сессия не работает? я где то допустил ошибку?
     
  14. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Код (Text):
    1.     if (isset($login)){
    2.         print "isset";
    3.         LoginTest();
    4.     } elseif ($login == 1){
    5.         print "login";
    6.         LoginOK();
    7.     }
     
  15. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    НЕ РАБОТАЕТ
     
  16. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Код (Text):
    1. function LoginSave(){
    2. global $login;
    3. global $array;
    4. global $_SESSION;
    5.  
    6.     session_start();
    7.     $UserID = $array['id'];
    8.     $UserAcc = $array['username'];
    9.     $_SESSION['userid'] = $UserID;
    10.     $_SESSION['username'] = $UserAcc;
    11.     $_SESSION['login'] = $login;
    12.     print $_SESSION['login'];
    13.     LoginOK();
    14. }
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ExDragon
    напиши свою с нуля за 10 минут и все будет работать

    и сессион старт должен быть на своем месте