登录页面上的PHP错误

时间:2014-03-03 17:42:30

标签: php login system

试图创建一个登录系统,并由一个我无法解决的错误停止!

  

未定义的索引:第4行的C:\ xamppp \ htdocs \ eatswrong \ member.php中的user_name

这是登录代码!

<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];

if($username&&$password) {

$con = mysql_connect('localhost','root','')
        or die('An error occured while conneting  !');
mysql_select_db('blogpers') or die('Eroare la conectarea cu baza de date !');
$query = mysql_query("SELECT * FROM users WHERE username = '$username'");
$numrows = mysql_num_rows($query);

if ($numrows !=0) {

    while ($rows = mysql_fetch_assoc($query)){

        $dbusername = $rows['username'];
        $dbpassword = $rows['password'];

    }

    if ($username==$dbusername&&$password==$dbpassword) {
        echo "You're in ! <a href='member.php'>Click</a> here to enter the membership              page ! ";
        $_SESSION['user_name']=$username;
    } else{
        echo 'Incorrect password!';
    }

} else {
    die("That user doesn't exist !");
}

      } else {
 echo 'Please enter username and password !';
}
  ?>

这是会员页面代码:

<?php
  session_start();

  if($_SESSION['user_name']) {
      echo "Welcome, ".$_SESSION['user_name']."!"; 
   echo "<a href='logout.php'>Log OUT</a>";
   } else {
  echo "To acces this page please log in !";
   }

    ?>

3 个答案:

答案 0 :(得分:2)

解决您的问题

您收到通知(在大多数情况下不会停止脚本运行或工作),因为您正在'user_name'内检查索引$_SESSION,但未设置索引。< / p>

<?php
session_start();

if($_SESSION['user_name']) { // <-- Checking here, but there's nothing setting it above it. session_start(); does not set it

使用isset()查看是否已设置。您可能还想使用empty()或其他可能检查用户名有效的方法检查它是否为空。

关于您使用mysql _ *

另外需要注意的是,您正在使用已弃用的MySQL API,mysql_*函数是。请参阅Choosing an API以获取最新且更安全的选择。

最后但并非最不重要

您根本没有清理用户的输入。如果有人要发送他们的an SQL query (slightly modified) as their username,你的脚本就会运行它,并且会发生不好的事情。如果您不打算切换到更安全的API,请至少使用mysql_real_escape_string()

答案 1 :(得分:0)

我认为您不应该获取有关用户的所有信息。 它应该是这样的:

$query = mysql_query("SELECT * FROM users WHERE username = '$username' AND password ='$password' ");
$numrows = mysql_num_rows($query);

if ($numrows == 1) {

所以,将来:

-dont使用mysql_ *函数,不推荐使用,将删除。阅读PDO

-read about functions empty()和isset()。

祝你好运:)

答案 2 :(得分:-1)

您的警告在此行的会员页面中:

if($_SESSION['user_name']) {

应该是:

if(isset($_SESSION['user_name'])) {

你需要检查会话中是否设置了user_name。它应该解决你的问题。