【发布时间】:2013-06-01 11:50:43
【问题描述】:
所以我在存储输入到我的网站的用户名并让自己登录到该网站时遇到问题。我可以登录(我看到这是因为“您已登录”消息。但是第二次单击链接转到 members.php 页面时,它返回回显“您尚未登录。”。 为什么没有将 $username 值添加到 SESSION?
这是我的 4 个代码。我还有第五个我的所有 MySQL 信息,我不想分享,但是,我的用户名是通过 MySQL 确认的,因为我收到了第一次登录验证。是的,我按照 YouTube 上的教程进行操作。
index.php
<html>
<form action='login.php' method='POST'>
Username: <input type='username' name='username'><br>
Password: <input type='password' name='password'><br>
<input type='submit' name='button' value='Login'>
</form>
</html>
登录.php
<?php
session_start();
$password = $_POST['password'];
$username = $_POST['username'];
include ("connect.php");
if ($username && $password)
{
// info is provided
$queryget = mysql_query("SELECT * FROM login WHERE username='$username' AND password ='$password' ");
$numrows = mysql_num_rows($queryget);
if ($numrows != 0)
{
$_SESSION['username'] = $username;
echo "You have been logged in. <a href='members.php'>Go to the members page</a>";
}
else echo "This password is wrong";
include ("index.php");
}
else
{
echo "Wrong password, try again!";
include ("index.php");
}
?>
members.php
<?php
session_start();
$username = $_SESSION['username'];
if ($username)
{
echo "Welcome $username | <a href='logout.php>Logout</a>'";
}
else
{
echo "You are not logged in.";
include ("index.php");
}
?>
注销.php
<?php
session_start();
$username = $_SESSION['username'];
session_destroy();
echo "You have been logged out.";
?>
【问题讨论】:
-
有一天,有人会尝试以
'; DROP TABLE login; --登录,而你会大声哭泣。 -
这不可能吗?以为你必须进入服务器的 Mysql 才能绕过它......
-
@Denis PHP 的 MySQL 扩展不允许多个语句。但是你应该fix that SQL injection vulnerability,FriedBitz。输入密码
' OR '1'='1将绕过身份验证。 -
我会去看看,但目前我没有什么可隐藏的,只是学习 MySQL 和 PHP 通信的基础知识 :) 感谢您的提示!
-
除了可怕的安全漏洞和低效的 mysql 查询之外,它看起来应该可以工作。你试过更简单的测试吗?
test1.php你在哪里设置会话变量,test2.php你在哪里读到它?