gpt4 book ai didi

php + sql语句总是返回成功?

转载 作者:行者123 更新时间:2023-11-29 07:47:54 24 4
gpt4 key购买 nike

这是代码

<?php
include("global.php");

$username = mysql_real_escape_string(stripslashes($_POST["strUserName"]));
$password = md5(mysql_real_escape_string(stripslashes($_POST["strPassword"])));
$charid = mysql_real_escape_string(stripslashes($_POST["charid"]));
$quest = mysql_real_escape_string(stripslashes($_POST["strQuest"]));


$query = "SELECT * FROM wherei_users, wherei_characters WHERE wherei_users.username = '{$username}' AND wherei_users.password = '{$password}' AND wherei_characters.username = '{$username}' AND wherei_characters.Id = '{$charid}'";
$result = mysql_query($query);
$yesorno = (mysql_num_rows($result) == 0) ? 'NO' : 'YES';


if(empty($username) || empty($password) || empty($charid) || empty($quest) || $yesorno == "NO") {
$status="error";
$msg="InvalidData";
$actiontype="&actiontype=savequestdata";
$out=("$actiontype&status=$status&msg=$msg");
}

if ($yesorno = "YES") {
mysql_query("UPDATE wherei_characters SET strQuest = '{$quest}' WHERE username = '{$username}' AND id = '{$charid}'") or die(mysql_error());
$actiontype="&actiontype=savequestdata";
$status="success";
$out=("$actiontype&$status");
}

echo("$out");
?>

但是总是返回状态成功?当我进入浏览器并输入 url 时,它会返回此

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

当我故意设置错误的值时,它会返回状态成功,您会看到 if ether $username,$password,$charid,$quest为空或者 $yesornoNO那么它应该回显 &actiontype=savequestdata&status=error&msg=InvalidData 。无论我将变量设置为什么,它都会返回 `actiontype=savequestdata&success?

最佳答案

这是您的问题:

if ($yesorno = "YES") {

发现了吗? ....?

PHP 中的单个 = 是一个赋值运算符,因此您将变量 $yesorno 赋值为等于 "YES",在 PHP(并非所有语言)中也将运行 IF 并等于 TRUE。

您需要:
== 比较运算符

=== 相同比较运算符

<小时/><小时/>

代码中一些不相关但重要的旁注:

折旧功能
mysql_ 函数已被弃用。您应该考虑研究/学习/使用MysqliPDO

更多信息:How can I prevent SQL injection in PHP?

验证和清理
我看到您在 $_POST 变量上使用 mysql_real_escape_string
确保在将数据传递到数据库阶段之前检查变量。
用户可以在表单中输入任何内容,并且由于您使用的是容易受到注入(inject)攻击的mysql_,因此您应该非常小心。

What are the best PHP input sanitizing functions?

MD5
就连 PHP 的开发者 php.net 也声明:

Note: Secure password hashing
It is not recommended to use this function to secure passwords, due to the fast nature of this hashing algorithm.

请参阅此处了解原因:
http://php.net/manual/en/faq.passwords.php#faq.passwords.fasthash

关于php + sql语句总是返回成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com