试图创建一个登录系统,并由一个我无法解决的错误停止!
未定义的索引:第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 !";
}
?>
答案 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 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。它应该解决你的问题。