PHP登录重定向
我正在创建一个页面,但遇到了一个问题。下一个问题是: 我有index.php,其中包含“header.php”和“footer.php” 在header.php中,我有一个带有用户名和密码字段的表单,该表单有一个名为login_的提交表单。下面是header.php中的代码:PHP登录重定向,php,login,Php,Login,我正在创建一个页面,但遇到了一个问题。下一个问题是: 我有index.php,其中包含“header.php”和“footer.php” 在header.php中,我有一个带有用户名和密码字段的表单,该表单有一个名为login_的提交表单。下面是header.php中的代码: <?php session_start(); include 'functions.php'; if (isset($_POST['login_form'])) { $username = mysql_re
<?php
session_start();
include 'functions.php';
if (isset($_POST['login_form'])) {
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$username = $_SESSION['username'];
$password = $_SESSION['password'];
if (!empty($username) && !empty($password)) {
connectDB();
$sql="SELECT id, name, type FROM users WHERE username = '$username' AND password ='$password'";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0 ) {
$error = "No user with that combination username and password! ";
echo $error;
header("Location:index.php");
} else {
$_SESSION['username'] = $username;
echo "Some message " . $username;
header("Location:index.php");
} }
编辑
这个基于mysqli.*
的方法适合我,它已经类似于我的一个脚本了
N.B.:出于测试目的,我注释掉了标题以及引发错误的一行代码
旁注:我知道这是一个大学项目,但以明文形式存储密码是不安全的。仅供参考
<?php
session_start();
// include 'functions.php';
$link = new mysqli("localhost","xxx", "xxx", "xxx");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
if (isset($_POST['login_form'])) { // is my submit button name below in form
$username = mysqli_real_escape_string($link,$_POST['username']);
$password = mysqli_real_escape_string($link,$_POST['password']);
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$username = $_SESSION['username'];
$password = $_SESSION['password'];
if (!empty($username) && !empty($password)) {
$sql="SELECT * FROM users WHERE username = '$username' AND password ='$password'";
$result = mysqli_query($link,$sql);
// throws an error
// if(mysqli_num_rows($result) == 0 ) {
// works properly
if(mysqli_num_rows($result) !=1 ) {
$error = "No user with that combination username and password! ";
echo $error;
// header("Location:index.php");
} else {
$_SESSION['username'] = $username;
echo "Some message " . $username;
// header("Location:index.php");
}
}
}
?>
<form action="" method="post">
Username:
<input type="text" name="username">
<br>
Password:
<input type="text" name="password">
<br>
<input type="submit" name="login_form" value="Submit">
</form>
为您的if(isset($\u POST['login\u form']){
条件语句添加一个缺少的右括号}
或者,如果上述操作仍然无法处理已修复的缺失报价,则可能需要使用选择*
$sql="SELECT * FROM users WHERE username = '$username' AND password ='$password'";
…我成功了。以下是如何做到的:
当用户登录时,因为每个用户都有自己的类型(管理员、用户、版主),所以我想为他显示菜单
身份验证完成后->
用户类型=0是管理员
用户类型=1是用户
header.php
<?php
...
if(isset($user)) {
if $user_type == 0} { ?>
<ul class='submenu'>
<li><a href='skladiste.php?dnr=3'>Add new item</a> |</li>
<li><a href='skladiste.php?s=6'>Promet robe</a> |</li>
<li><a href='admin.php?pregled'>Edit users</a></li>
</ul><?php }
else if ($user_type == 1) { //Menu for user ?>
<ul class='submenu'>
<li><a href='naruci.php'>Order item</a> |</li>
<li><a href='kosarica.php'>My orders</a> |</li>
<li><a href='artikli.php?stanje'>Edit my profile</a></li>
</ul>
<?php }} ?>
因此,在登录后,您可以使用admin、guest、user设置一个变量。然后检查用户是否已登录以及他拥有哪个会话变量。然后在php include中使用if else子句。这样他们将始终看到正确的站点。$\u session['type']=“admin”;
mysql函数已被弃用。请改用PDO或mysqli!是的,我知道它们已被弃用,但构建此函数是为了上大学,所以我必须使用旧方法。请看我在下面发布的内容。@b3nkyyes,我知道它们已弃用,但构建此函数是为了上大学,所以我必须使用旧方法。关于一个引用,我没有输入错误。我只是编辑了一下d我一分钟前的回答。您发布的代码缺少一个用于您的if(isset($\u POST['login\u form'])的右括号}
){
conditional语句。@b3nkyAlso,我刚刚用我自己的信息测试了你的代码,当我从用户中选择id、名称、类型时,它抛出了一个错误,但如果我从用户中选择了,它就起作用了。所以这可能是问题所在。试着用那种方式。另外,不要做if(mysql_num_rows($result)=0)
您可能希望将其更改为if(mysql_num_rows($result)!=1)
,因为第一个方法无法正常工作。@b3nkyI使用了基于mysqli_*
的版本进行了编辑,该版本有效(基于我使用的内容,类似于您的代码)@b3nky您只需将DB凭据替换为您自己的凭据。此外,代码中的$link
基于DB连接,因此如果您的DB变量不同,则需要更改这些凭据。只是想知道哪种方式更好地回显菜单?如上所述或通过“回显”
<?php
...
if(isset($user)) {
if $user_type == 0} { ?>
<ul class='submenu'>
<li><a href='skladiste.php?dnr=3'>Add new item</a> |</li>
<li><a href='skladiste.php?s=6'>Promet robe</a> |</li>
<li><a href='admin.php?pregled'>Edit users</a></li>
</ul><?php }
else if ($user_type == 1) { //Menu for user ?>
<ul class='submenu'>
<li><a href='naruci.php'>Order item</a> |</li>
<li><a href='kosarica.php'>My orders</a> |</li>
<li><a href='artikli.php?stanje'>Edit my profile</a></li>
</ul>
<?php }} ?>