gpt4 book ai didi

php - MySQL 和 PHP 意外的 T_Variable

转载 作者:行者123 更新时间:2023-11-29 03:57:34 26 4
gpt4 key购买 nike

好的,所以我编写了一个 register.php 脚本,当命令尝试执行时我得到了一个意外的 T 变量。错误位于第 15 行

('$_Post[username]','$_Post[sha_pass_hash]','$_Post[email]','2')";

根据 Dreamweaver 的第 20 行,我的语法中还有第二个错误

    die('Error: ' . mysql_error());

如果有人能提供帮助,我们将不胜感激。提前谢谢你。

最佳答案

停止

直接从 post 插入数据库总是一个坏主意。这就是 PHP 目前坚持使用非常不直观的魔术引号的原因。

您至少应该使用 mysql_real_escape_string() 来转义您的数据。例如:

$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());

$query = "INSERT INTO users VALUES (
'" . mysql_real_escape_string($_POST["username"]) . "',
'" . mysql_real_escape_string($_POST["sha_pass_hash"]) . "',
'" . mysql_real_escape_string($_POST["email"]) . "',
'2'
)";

mysql_query($query);

您必须这样做的原因是基于安全性。例如,如果某些恶意软件将用户名字段设置为 '); DROP TABLE 用户; 无需先转义您的数据。您最终会盲目地运行以下查询:

INSERT INTO users VALUES (''); DROP TABLE users;

当然,这对您的申请来说不会有好结果。

这是您应该做的最低限度

实际上你真的应该移动到MySQLi这是一个更现代的 MySQL 界面。这是一个例子

$mysqli = new mysqli('mysql_host', 'mysql_user', 'mysql_password', 'mysql_database');

$query = "INSERT INTO users VALUES (
'" . $mysqli->real_escape_string($_POST["username"]) . "',
'" . $mysqli->real_escape_string($_POST["sha_pass_hash"]) . "',
'" . $mysqli->real_escape_string($_POST["email"]) . "',
'2'
)";

$mysqli->query($query);

您甚至可以以过程方式使用 MySQL。因此,如果面向对象的编程不在您的范围内,那么您将不会遇到 MySQLi 的问题。

希望对您有所帮助。

关于php - MySQL 和 PHP 意外的 T_Variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407788/

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