那么,这可能是有人问这个问题的第n次,但说实话,我并没有在谷歌的最后一个小时左右拿到任何有用的东西。我想做的是琐事,或者我想。我有这个在Java脚本中工作,但想将它移动到PHP。简而言之:
我的(有限的)PHP智慧让我相信它应该像下面这样,但显然它不是。我非常感谢任何洞察力。
<?php
$coconew = "blah";
if (isset ($_POST["cocosub"])) {
if ($_POST["cocoval"] == "") {
echo "empty";
} else {
if ($_POST["cocoval"] != $coconew) {
echo "mismatch";
} else {
echo "match";
}
}
}
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" id="cocosub" method="post">
<div>
<?php echo $coconew; ?>
<input type="text" id="cocoval">
<input type="submit">
</div>
</form>
答案 0 :(得分:1)
您需要更改
<input type="text" id="cocoval">
到
<input type="text" name="cocoval">
还有其他(可能更好)的方法,但你走在正确的轨道上。
答案 1 :(得分:1)
$_POST
仅查找表单元素的name
属性,因此请修改表单:
<?php
$coconew = "blah";
if (isset ($_POST["cocoval"])) {
if ($_POST["cocoval"] === "") {
echo "empty";
} else {
if ($_POST["cocoval"] !== $coconew) {
echo "mismatch";
} else {
echo "match";
}
}
}
?>
<form id="cocosub" method="post">
<div>
<?php echo $coconew; ?>
<input type="text" id="cocoval" name="cocoval">
<input type="submit">
</div>
</form>
(我做了一些其他更改,你要检查元素上的isset
,而不是表单,如果你没有给它一个属性,它会POST到同一页面[所以不需要添加echo
],并在你的php中添加更好的类型检查
答案 2 :(得分:1)
除了已发布的其他答案之外,您可能还对PHP的会话支持感兴趣(取决于您需要静态变量的“静态”)。如果您需要在同一用户的同一URL的多个请求中保存其值,那么您可以将$cocoval
和任何其他变量放在这里。有关详细信息,请参阅此处:
http://php.net/manual/en/features.sessions.php和 http://www.php.net/manual/en/book.session.php
答案 3 :(得分:0)
这有效:
<?php
session_start();
if(isset($_POST["cocosub"])){
$input = trim($_POST["cocoval"]);
if($input == ""){
echo "empty";
} elseif($input != $_SESSION["coconew"]){
echo "mismatch";
} else {
echo "match";
}
}
$_SESSION["coconew"] = substr(md5(uniqid()), 0, 5);
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" id="cocosub" method="post">
<div>
<?php echo $_SESSION["coconew"]; ?>
<input type="text" id="cocoval" name="cocoval">
<input type="submit" name="cocosub">
</div>
</form>
您需要将“name =”cocosub“添加到”提交“按钮元素,以使第一个if(isset(...))条件为true。这就是脚本不起作用的原因。此外,您还需要在输入文本字段中使用name =“cocoval”而不是id,以便将其结转到$ _POST。