这是我的PHP代码,我想问题出在$_POST[...]
?
PHP:
<?php
require('connect.php');
$name = $_POST['name'];
$comment = $_POST['comment'];
$submit = $_POST['submit'];
if($submit)
{
if($name&&$comment)
{
$query=mysql_query("INSERT INTO comment (id,name,comment) VALUES ('','$name','$comment')");
header("Location: success.php");
}
else
{
echo "Lūdzu aizpildi visus logus.";
}
}
?>
字段和textarea的形式。
HTML:
<form action="help-add-comment.php" method="POST">
<label>Jūsu vārds: </label><br /><input type="text" name="name" size="25" value="<?php echo "$name" ?>" /><br /><br />
<label>Ziņojums: </label><br /><textarea name="comment" cols="25" rows="7"></textarea><br /><br />
<input type="submit" class="button button-red" name="submit" value="Pievienot" /><br/>
</form>
这是我的结果:
答案 0 :(得分:3)
检查你的值是否先被定义,它是否有效,因为这不是一个错误,它只是一个警告。
这样做:
<?php
if (!empty($_POST["name"]) && !empty($_POST["comment"]) && isset($_POST["submit"])) {
require('connect.php');
//Get Post value
$name = $_POST['name'];
$comment = $_POST['comment'];
$submit = $_POST['submit'];
//Execute query
$query=mysql_query("INSERT INTO comment (id,name,comment) VALUES ('','$name','$comment')");
header("Location: success.php");
}else{
//one of the value is not set (undefined)
echo "Ludzu aizpildi visus logus.";
}
?>
详细了解if和if/else,isset()和empty()
PS:
您的代码容易受到SQL注入攻击,而且mysql is now deprecated也是如此。 You should use mysqli extensions or PDO. 这很严重,因为你很容易被黑客入侵。
答案 1 :(得分:2)
您正在尝试访问$_POST
数组中不存在的字段,警告是正确的。您应该只在实际存在时处理这些字段,因此当您实际响应表单回发时,通过检查请求方法:
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = $_POST['name'];
$comment = $_POST['comment'];
$submit = $_POST['submit'];
// Handle rest of postback
}
请注意,这仍然允许恶意用户触发警告,从而通过伪造请求获取应用程序内部的知识。您可以通过安全地检索POST值来解决此问题:
function getPostValue($name, $default = null)
{
return isset($_POST[$name]) ? $_POST[$name] : $default;
}
$name = getPostValue('name');
使用错误抑制运算符(@
)可以达到相同的效果,但它对性能有害,对于像这样的简单情况,它被认为是不好的样式。
答案 2 :(得分:0)
尝试:
<?php
require('connect.php');
$name = isset($_POST['name']) ? $_POST['name']: '' ;
$comment = isset($_POST['comment']) ? $_POST['comment'] : '' ;;
$submit = isset($_POST['submit']) ? $_POST['submit'] : '' ;;
if($submit)
{
if($name&&$comment)
{
$query=mysql_query("INSERT INTO comment (id,name,comment) VALUES ('','$name','$comment')");
header("Location: success.php");
}
else
{
echo "Lūdzu aizpildi visus logus.";
}
}
?>