html 表单不会提交 POST
html form wont submit POST
我正在玩剪刀石头布游戏来练习我的 html 和 php,一切都很好,直到我尝试在 POST
中提交用户选择的答案.我一直在检查,按下 button
播放键时没有提交任何内容。
这是我的 html
代码:
<html>
<head>
<title>Oscar Felipe Ramírez Pardo</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Rock Paper Scissors</h1>
<p>Welcome: <?=htmlentities($_GET['name'])?></p>
<forms method="POST">
<p>
<select name="option">
<option value="Select" checked>Select</option>
<option value="Rock">Rock</option>
<option value="Paper">Paper</option>
<option value="Scissors">Scissors</option>
<option value="Check">Check</option>
</select>
<input type="submit" value="Play" name="dopost">
<input type="button" value="Logout" name="logout"></p>
</forms>
<pre>
<?php
foreach($rslt as $k => $v){
echo $v."\n";
}
?>
</pre>
</body>
</html>
这是之前的模型对照:
<?php
$rslt=array("Please select a strategy and press Play.");
$names=array("Rock","Paper","Scissors");
if(!isset($_GET['name'])) die("Name parameter missing");
if(isset($_POST['logout'])){
header("Location: login.php");
return;
}
function play($h){
$c=$names[rand(0,2)];
if($h===$c) $r="Tie";
else if($h==="Rock" && $c==="Scissors") $r="You win.";
else if($h==="Scissors" && $c==="Paper") $r="You win.";
else if($h==="Paper" && $c==="Rock") $r="You win.";
else $r="You lose.";
return "Your Play=$h Computer Play=$c Result=$r";
}
if(isset($_POST['option'])){
if($_POST['option']==="Select") $rslt=array("You must select a strategy in order to play.");
else if($_POST['option']==="Check"){
}
else{
$rslt=array(play($_POST['option']));
}
}
?>
我按任一按钮都没有得到任何信息 as it shows here., but the source code shows the first php variables are being recognized。
我认为您将标签 <form>
拼错为 <forms>
,您必须添加一个操作来指定要调用的 php 页面。
像这样:
<form method="POST" action="test.php">
<p>
<select name="option">
<option value="Select" checked>Select</option>
<option value="Rock">Rock</option>
<option value="Paper">Paper</option>
<option value="Scissors">Scissors</option>
<option value="Check">Check</option>
</select>
<input type="submit" value="Play" name="dopost">
<input type="button" value="Logout" name="logout"></p>
</form>
不仅forms
错了,你玩的时候应该也会出现undefined error。
在 play
函数中添加 global $names
。并将结果添加到 p
或其他标签中而不是 textarea
更好读
$rs = 1;
$rslt = "Please select a strategy and press Play.";
$names = array("Rock", "Paper", "Scissors");
if (!isset($_GET['name'])) die("Name parameter missing");
if (isset($_POST['logout'])) {
header("Location: login.php");
return;
}
function play($h)
{
global $names;
$c = $names[rand(0, 2)];
if ($h === $c) $r = "Tie";
else if ($h === "Rock" && $c === "Scissors") $r = "You win.";
else if ($h === "Scissors" && $c === "Paper") $r = "You win.";
else if ($h === "Paper" && $c === "Rock") $r = "You win.";
else $r = "You lose.";
return "Your Play=$h Computer Play=$c Result=$r";
}
if (isset($_POST['option'])) {
if ($_POST['option'] === "Select") $rslt = "You must select a strategy in order to play.";
else if ($_POST['option'] === "Check") {
} else {
$rslt = play($_POST['option']);
}
}
?>
<html>
<head>
<title>Oscar Felipe Ramírez Pardo</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Rock Paper Scissors</h1>
<p>Welcome: <?= htmlentities($_GET['name']) ?></p>
<form method="POST">
<select name="option">
<option value="Select" >Select</option>
<option value="Rock">Rock</option>
<option value="Paper">Paper</option>
<option value="Scissors">Scissors</option>
<option value="Check">Check</option>
</select>
<input type="submit" value="Play" name="dopost">
<input type="button" value="Logout" name="logout">
<p style="font-family:monospace">
<p>
<?= $rslt ?>
</p>
</p>
</form>
</body>
</html>
我实际上也发现注销按钮不起作用,因为它的类型是 button
而不是 submit
因此 post 没有提交并且 isset($_POST['logout'])
没用过。
我正在玩剪刀石头布游戏来练习我的 html 和 php,一切都很好,直到我尝试在 POST
中提交用户选择的答案.我一直在检查,按下 button
播放键时没有提交任何内容。
这是我的 html
代码:
<html>
<head>
<title>Oscar Felipe Ramírez Pardo</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Rock Paper Scissors</h1>
<p>Welcome: <?=htmlentities($_GET['name'])?></p>
<forms method="POST">
<p>
<select name="option">
<option value="Select" checked>Select</option>
<option value="Rock">Rock</option>
<option value="Paper">Paper</option>
<option value="Scissors">Scissors</option>
<option value="Check">Check</option>
</select>
<input type="submit" value="Play" name="dopost">
<input type="button" value="Logout" name="logout"></p>
</forms>
<pre>
<?php
foreach($rslt as $k => $v){
echo $v."\n";
}
?>
</pre>
</body>
</html>
这是之前的模型对照:
<?php
$rslt=array("Please select a strategy and press Play.");
$names=array("Rock","Paper","Scissors");
if(!isset($_GET['name'])) die("Name parameter missing");
if(isset($_POST['logout'])){
header("Location: login.php");
return;
}
function play($h){
$c=$names[rand(0,2)];
if($h===$c) $r="Tie";
else if($h==="Rock" && $c==="Scissors") $r="You win.";
else if($h==="Scissors" && $c==="Paper") $r="You win.";
else if($h==="Paper" && $c==="Rock") $r="You win.";
else $r="You lose.";
return "Your Play=$h Computer Play=$c Result=$r";
}
if(isset($_POST['option'])){
if($_POST['option']==="Select") $rslt=array("You must select a strategy in order to play.");
else if($_POST['option']==="Check"){
}
else{
$rslt=array(play($_POST['option']));
}
}
?>
我按任一按钮都没有得到任何信息 as it shows here., but the source code shows the first php variables are being recognized。
我认为您将标签 <form>
拼错为 <forms>
,您必须添加一个操作来指定要调用的 php 页面。
像这样:
<form method="POST" action="test.php">
<p>
<select name="option">
<option value="Select" checked>Select</option>
<option value="Rock">Rock</option>
<option value="Paper">Paper</option>
<option value="Scissors">Scissors</option>
<option value="Check">Check</option>
</select>
<input type="submit" value="Play" name="dopost">
<input type="button" value="Logout" name="logout"></p>
</form>
不仅forms
错了,你玩的时候应该也会出现undefined error。
在 play
函数中添加 global $names
。并将结果添加到 p
或其他标签中而不是 textarea
更好读
$rs = 1;
$rslt = "Please select a strategy and press Play.";
$names = array("Rock", "Paper", "Scissors");
if (!isset($_GET['name'])) die("Name parameter missing");
if (isset($_POST['logout'])) {
header("Location: login.php");
return;
}
function play($h)
{
global $names;
$c = $names[rand(0, 2)];
if ($h === $c) $r = "Tie";
else if ($h === "Rock" && $c === "Scissors") $r = "You win.";
else if ($h === "Scissors" && $c === "Paper") $r = "You win.";
else if ($h === "Paper" && $c === "Rock") $r = "You win.";
else $r = "You lose.";
return "Your Play=$h Computer Play=$c Result=$r";
}
if (isset($_POST['option'])) {
if ($_POST['option'] === "Select") $rslt = "You must select a strategy in order to play.";
else if ($_POST['option'] === "Check") {
} else {
$rslt = play($_POST['option']);
}
}
?>
<html>
<head>
<title>Oscar Felipe Ramírez Pardo</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Rock Paper Scissors</h1>
<p>Welcome: <?= htmlentities($_GET['name']) ?></p>
<form method="POST">
<select name="option">
<option value="Select" >Select</option>
<option value="Rock">Rock</option>
<option value="Paper">Paper</option>
<option value="Scissors">Scissors</option>
<option value="Check">Check</option>
</select>
<input type="submit" value="Play" name="dopost">
<input type="button" value="Logout" name="logout">
<p style="font-family:monospace">
<p>
<?= $rslt ?>
</p>
</p>
</form>
</body>
</html>
我实际上也发现注销按钮不起作用,因为它的类型是 button
而不是 submit
因此 post 没有提交并且 isset($_POST['logout'])
没用过。