我希望用户只有在登录后才能访问购物车。
的index.html
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
Cart.php
<?php
if(!isset($_SESSION["userName"]))
{
header("Location: ../index.html");
}
?>
connectivitity.php
function SignIn()
{
session_start(); //starting the session for user profile page
if(!empty($_POST['user'])) //checking the 'user' name which is from Sign-In.html, is it empty or have some text
{
$query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error());
$row = mysql_fetch_array($query) or die(mysql_error());
if(!empty($row['userName']) AND !empty($row['pass']))
{
$_SESSION['userName'] = $row['pass'];
header("location: ../PHP/Cart.php");
} else {
echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY...";
}
}
}
if(isset($_POST['submit']))
{
SignIn();
}
此时无论我尝试的变化如何,它都会将我重定向回index.html。甚至以为我改变了标题,直接把我带到Cart.php文件。
我在CPanel上运行godaddy托管包,这是在.htaccess文件中
Options +MultiViews
AddType application/x-httpd-php .html .htm
答案 0 :(得分:1)
我不确定这是否是核心问题,但你应该寻找它。
1)而不是使用不正确的字符串连接的查询:
$query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error());
让它更简单:
$user = $_POST['user'];
$pass = $_POST['pass'];
$query = "SELECT * FROM UserName where userName = '$user' AND pass = '$pass'";
$query = mysql_query($query) or die(mysql_error());
2)无论您使用/设置/取消设置/还是使用sessions
执行任何操作。始终在代码的开头写下session_start();
。
您的固定cart.php
:
<?php
session_start();
if(!isset($_SESSION["userName"]))
{
header("Location: ../index.html");
}
?>
注意:即使这些修复程序可以帮助您解决问题。但它是 强烈建议您使用预先准备好的语句移至
mysqli
或PDO
因为这段代码仍然容易出现SQL注入。