gpt4 book ai didi

PHP按钮定义错误

转载 作者:行者123 更新时间:2023-11-29 21:38:30 25 4
gpt4 key购买 nike

我遇到了 php 问题。这段代码给了我错误:

<input type="text" name="comment">
<tr>
<input type="submit" value="Post" name="Post">
<?php
if ($_POST['Post']) {
if (!isset($_COOKIE["c_user"])) {
die("Aby komentowac musisz byc zalogowany!");
} else {
$user = $_COOKIE["c_user"];
$comment = mysql_real_escape_string($_POST['comment']);
if ($_POST['comment'] && $_POST['$user']) {
mysql_query("INSERT INTO posts (comments, user) VALUES ('$user', '$comment')");
}
}
}
?>

错误看起来像这样:

Notice: Undefined index: Post in C:\xampp\htdocs\index.php on line 148.

我搜索了 stackoverflow 并找到了答案。然后将代码升级到该版本后:

<?php
if (isset($_POST['Post'])) {
if ($_POST['comment']) {
if (!isset($_COOKIE["c_user"])) {
die("Aby komentowac musisz byc zalogowany!");
} else {
$user = $_COOKIE["c_user"];
$comment = mysql_real_escape_string($_POST['comment']);
if ($_POST['comment'] && $_POST['$user']) {
mysql_query("INSERT INTO posts (comments, user) VALUES ('$user', '$comment')");
}
}
} else {
echo "Komentarz nie został wpisany.";
}
} else {
echo "Post nie jest ustawiony!";
}
?>

它仍然不读取内部 if 语句,也不进行 cookie 检查。请帮忙。

最佳答案

您的第一个警告是由于您的表单未提交,因此超全局 $_POST 中没有元素。 - 名为“Post”的数组。通过阅读PHP: "Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset"您将看到如何修复这些问题(看起来您也修复了它们)。

首先,我没有看到任何表单标签。能够通过 $_POST 提交表单,您需要将输入包装在 <form> 内标签。默认情况下,表单提交超过 $_GET (会将数据放入 URL 中),但您最可能想要的是通过 $_POST 提交,所以我们指定method -属性。

<form method="POST">
<input type="text" name="comment">
<input type="submit" value="Post" name="Post">
</form>

我遗漏了action属性,因为在我看来,您将 PHP 与 HTML 表单放在同一页面上。

您在 PHP 中进行了大量检查,其中一些检查会使您的脚本失败(例如,$_POST['$user'] 可能是问题的原因,因为它没有检查变量,但实际文本 $user 。此外,变量 $user永远成为 $_POST 数组的一部分),但我们可以使其更紧凑、更易于阅读。这也可以放在同一个 PHP 页面上的任何地方,您不需要将此代码放在 <form> 中。 -标签。

if (isset($_POST['Post'])) {
if (!empty($_POST['comment'])) {
// Only enter this code if the form has been submitted

if (!isset($_COOKIE["c_user"]))
die("Aby komentowac musisz byc zalogowany!"); // If the coookie is not set, stop the script

$user = $_COOKIE["c_user"];
$comment = mysql_real_escape_string($_POST['comment']);

mysql_query("INSERT INTO posts (comments, user) VALUES ('$user', '$comment')");
} else {
echo "Komentarz nie został wpisany.";
}
}
<小时/>

您的脚本也容易受到 SQL-injection 的攻击,所以我强烈建议您切换到 mysqli_*或带有准备好的语句的 PDO。下面给出了带有预准备语句的面向对象 MySQLi 的示例

$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (".$mysqli->connect_errno.") ".$mysqli->connect_error;
}
$mysqli->set_charset("utf8");

$stmt = $mysqli->prepare("INSERT INTO posts (user, comments) VALUES (?, ?)");
$stmt->bind_param("ss", $user, $comment);
$stmt->execute();
$stmt->close();

引用文献:

关于PHP按钮定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34724664/

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