2012-06-28 5 views
-4

У меня проблемы с простым входом в систему с использованием php и mysql.Basic Login with SESSIONS

Вот мой код:

login.php

<?php 

    //include 'core/init.php'; 
    include 'functions.php'; 

    //JH check if user is logged in already 
    if (loggedin()) { 
     header("location: userarea.php"); 
     exit(); 
    } 

    if ($_POST['login']) { 
     $user = $_POST['user']; 
     $pass = $_POST['pass']; 
     $remember = $_POST['remember']; 
     $password_encrip = hash('md5', $pass); 

    if ($user&&$pass) { 
     $login = mysql_query("SELECT * FROM users WHERE user='$user'"); 
     while ($row = mysql_fetch_assoc($login)) 
     $db_pass = $row['pass']; { 

     if ($password_encrip==$db_pass) 
      $login_ok = TRUE; 
     else 
      $login_ok = FALSE; 
     } 

     if ($login_ok==TRUE) { 

      if ($remember=="on") 
       setcookie("user", $user, time()+7200); 

      else if ($remember=="") 
       $_SESSION['user']=$user; 

      header("Location: userarea.php"); 
      exit(); 

     } else 
      echo "ERROR: Username/Password combination incorrect!"; 

     } else 
      die("ERROR: Hit back and enter username and password!"); 
    } 


    ?> 

    <form action="login.php" method="POST"> 
    <b style="font-size:150%;">Log in</b><br/> 
    Username: <input type="text" name="user"/><br/> 
    Password: <input type="password" name="pass"/><br/> 
    <input type="checkbox" name="remember" />Remember me<br/> 
    <input type="submit" name="login" value="Log in"/> 
    </form> 

functions.php

<?php 

    // REPORT ERRORS? 
    //error_reporting(E_ALL); 

    // SESSIONS CHECK 
    session_start(); 

    //CONNECT TO DATABASE/CONNECT 
    mysql_connect("localhost","MYSQL","PASS") or die(); 
    mysql_select_db('DB') or die(); 

    // LOGIN CHECK FUNCTION 
    function loggedin() 
    { 
     if (isset($_SESSION['$user']) || isset($_COOKIE['$user'])) 
     { 
      $loggedin = TRUE; 
      return $loggedin; 
     } 
    } 


    ?> 

USERAREA.PHP

 <?php 

    //include 'core/init.php'; 
    include 'functions.php'; 

    //JH check if user is logged in already 
    if (!loggedin()) 
    { 
     header("location: login.php"); 
     exit(); 
    } 

    ?> 

    <p>Welcome! You're Logged in</p> <a href="logout.php">Logout</a><br/> 


    <?php 
     echo "Welcome SESS: ".$_SESSION['user']. "<br/>"; 
     echo "Welcome Cookie: ".$_COOKIE['user']. "<br/>"; 
    ?> 

Может кто-нибудь, пожалуйста, помогите?

+3

В чем проблема? Что не работает? –

+0

TOTZBALLS ?? действительно ... ТОТБОЛЛЫ ??? – bretterer

+0

В основном это перенаправляет меня на userarea.php, но это возвращает меня обратно в login.php, а затем я получаю неверную пароли/комбинационную ошибку. – user1489713

ответ

2

В верхней части PHP введите session_start(); (первая страница, которую вы опубликовали).

+0

Спасибо за ввод, я уверен, что это не повлияет на то, что он добавляется к сеансу через функции. Php? Добавил его в любом случае! Ive снял шифрование с пропускной способностью MD5, и теперь он устанавливает SESSION/COOKIE, но только обновляет страницу и не отправляет меня на userarea.php и повторяет SESSION и COOKIE = 'admin', как и следовало ожидать. Очень странно, может кто-нибудь это проверить? – user1489713

+0

OOPS, в функции.php функция loggedin была неправильной: 'if (isset ($ _ SESSION [' $ user ']) || isset ($ _ COOKIE [' $ user ']))' - Удалено $ и отлично работает , Сожалею! – user1489713

+0

Я бы никогда этого не заметил. – ionFish

0

Дайте этому снимку одну большую вещь: вы всегда хотите дезинфицировать пользовательские входы до того, как они добавлены в запросы, а также если значения $ _post не установлены, они не возвращают значение false, если ($ _ POST ['something']) будет возвращена ошибка

----------------------------------- LOGIN.PHP 



<?php 

    //include 'core/init.php'; 
    include 'functions.php'; 

    //JH check if user is logged in already 
    if (loggedin()) { 
     header("location: userarea.php"); 
     exit(); 
    } 

    if ($_POST['login']) { 
     $user = mysql_real_escape_string($_POST['user']); 
     $pass = mysql_real_escape_string($_POST['pass']); 
     $remember = mysql_real_escape_string($_POST['remember']); 
     $password_encrip = hash('md5', $pass); 

     if (!empty($user) && !empty($pass)) { 
      $login = mysql_query("SELECT * FROM users WHERE user='$user' AND pass = '$password_encrip'"); 

      while ($row = mysql_fetch_assoc($login)) { 

       if (count($row) > 0) { 
        $login_ok = TRUE; 
       } else { 
        $login_ok = FALSE; 
       } 
      } 

      if ($login_ok) { 

       if ($remember == "on") { 
        setcookie("user", $user, time() + 7200); 
       } else if ($remember == "") $_SESSION['user'] = $user; 

       header("Location: userarea.php"); 
       exit(); 

      } else { 
       echo "ERROR: Username/Password combination incorrect!"; 
      } 

     } else { 
      die("ERROR: Hit back and enter username and password!"); 
     } 
    } 


?> 

<form action="login.php" method="POST"> 
    <b style="font-size:150%;">Log in</b><br/> 
    Username: <input type="text" name="user"/><br/> 
    Password: <input type="password" name="pass"/><br/> 
    <input type="checkbox" name="remember"/>Remember me<br/> 
    <input type="submit" name="login" value="Log in"/> 
</form> 


------------------------------------------ FUNCTIONS.PHP 

<?php 

    // REPORT ERRORS? 
    //error_reporting(E_ALL); 

    // SESSIONS CHECK 
    session_start(); 

    //CONNECT TO DATABASE/CONNECT 
    mysql_connect("localhost", "MYSQL", "PASS") or die(); 
    mysql_select_db('DB') or die(); 

    // LOGIN CHECK FUNCTION 
    function loggedin() { 
     if (isset($_SESSION['$user']) || isset($_COOKIE['$user'])) { 
      $loggedin = TRUE; 
      return $loggedin; 
     } 
    } 


?> 






---------------------------------------------- USERAREA.PHP 



<?php 

    //include 'core/init.php'; 
    include 'functions.php'; 

    //JH check if user is logged in already 
    if (!loggedin()) { 
     header("location: login.php"); 
     exit(); 
    } 

?> 

<p>Welcome! You're Logged in</p> <a href="logout.php">Logout</a><br/> 


<?php 
    echo "Welcome SESS: " . $_SESSION['user'] . "<br/>"; 
    echo "Welcome Cookie: " . $_COOKIE['user'] . "<br/>"; 
?>