PHP语句重定向到";否则";不考虑用户输入
我正在尝试制作一个简单的登录脚本,可以与Pancake一起使用。(在线发票) 无论您在表单中键入什么,它都会重定向到“else”语句。而不是试图重定向到成功页面PHP语句重定向到";否则";不考虑用户输入,php,Php,我正在尝试制作一个简单的登录脚本,可以与Pancake一起使用。(在线发票) 无论您在表单中键入什么,它都会重定向到“else”语句。而不是试图重定向到成功页面 <?php $con=mysqli_connect("example.com","example","example","example"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . my
<?php
$con=mysqli_connect("example.com","example","example","example");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con, "SELECT * FROM mypanda_clients
WHERE unique_id='$_POST[username]'");
while ($row = mysqli_fetch_array($result))
{
if ($_POST[password] == $ROW[passphrase])
{
header('Location: http://www.green-panda.com/my_panda/Clients/'.$_POST[username]); // concatenate the string
}
else
{
echo "The username and or password was incorrect. Please try again."; // missing semi colon
}
}
?>
未定义变量$ROW 改变
if ($_POST[password] == $ROW[passphrase])
if ($_POST[password] == $ROW[passphrase])
至
if ($_POST[password] == $row[passphrase])
if( $_POST[ 'password' ] == $row[ 'passphrase' ] )
此外,如果在数组键周围使用引号,PHP将更快地处理语句:
if ($_POST['password'] == $row['passphrase'])
这是因为php解释代码的方式。在意识到这不是基于整数的索引之前,它必须到达文本“passphrase”的结尾。然后尝试将其作为关联数组中的键查找。这意味着在成功之前,它会有效地查找两次$row['passphrase']
编辑:
我在这里有点偏离-我加入Philip的评论,以澄清这是错误的原因:
*“实际上情况更糟。如果您打开了E_通知,它会警告您它正在将未知常量转换为字符串值。这是不正确的,PHP只是试图帮助解决问题”*变量$ROW未定义 改变
if ($_POST[password] == $ROW[passphrase])
if ($_POST[password] == $ROW[passphrase])
至
if ($_POST[password] == $row[passphrase])
if( $_POST[ 'password' ] == $row[ 'passphrase' ] )
此外,如果在数组键周围使用引号,PHP将更快地处理语句:
if ($_POST['password'] == $row['passphrase'])
这是因为php解释代码的方式。在意识到这不是基于整数的索引之前,它必须到达文本“passphrase”的结尾。然后尝试将其作为关联数组中的键查找。这意味着在成功之前,它会有效地查找两次$row['passphrase']
编辑:
我在这里有点偏离-我加入Philip的评论,以澄清这是错误的原因:
*“实际上情况更糟。如果您打开了E_通知,它会警告您它正在将未知常量转换为字符串值。这是不正确的,PHP只是试图帮助解决问题”*变量是
$row
,而不是$row
,您需要在索引周围加引号
来自
至
if ($_POST[password] == $row[passphrase])
if( $_POST[ 'password' ] == $row[ 'passphrase' ] )
我还建议使用而不是变量是
$row
,而不是$row
,您需要在索引周围加引号
来自
至
if ($_POST[password] == $row[passphrase])
if( $_POST[ 'password' ] == $row[ 'passphrase' ] )
我还建议使用php而不是php区分大小写。将
$ROW[passphrase]
更改为$ROW[passphrase]
否。将$ROW[passphrase]
更改为$ROW['passphrase']
发布的密码不应与数据库中的密码匹配,因为数据库值应始终是散列。用纯文本保存密码是一个非常糟糕的主意。php区分大小写。将$ROW[passphrase]
更改为$ROW[passphrase]
否。将$ROW[passphrase]
更改为$ROW['passphrase']
发布的密码不应与数据库中的密码匹配,因为数据库值应始终是散列。用纯文本保存密码是一个非常糟糕的主意,实际上更糟。如果启用了E_NOTICE
,它将警告您正在将未知常量转换为字符串值。这是不正确的,PHP只是试图提供帮助。这一点很好。只是想让它简单易懂。一句话:坏主意。实际上更糟。如果启用了E_NOTICE
,它将警告您正在将未知常量转换为字符串值。这是不正确的,PHP只是试图提供帮助。这一点很好。只是想让它简单易懂。一句话:坏主意。