每当我尝试使用表单将数据发布到 PHP 时,它都说找不到任何变量,似乎没有信息通过该帖子。例如,我尝试获取变量“颜色”,它是一个下拉列表,但它表示未定义。这是我的 HTML
<form name="myform" action="index.php" method="post" >
<p>Body: <select id="body"name="body" onchange='changeLevel()'list="body">
<option value="Snail">Snail</option>
<option value="Ghost">Ghost</option>
</select></p>
<p>Color: <select name="color" list="colors">
<option value="Red">Red</option>
<option value="Green">Green</option>
<option value="Blue">Blue</option>
</select></p>
<p>Boots? <select name="boots"list="boots" >
<option>yes</option>
<option>no</option>
</select> </p>
<p id="mouthtext">Mouth: <select name="mouth" list="mouths" >
<option id="mouth1" value="Happy">Happy</option>
<option id="mouth2" value="Scared">Scared</option>
<option id="mouth3"value="Sad">Sad</option>
</select></p>
<p id="eyestext">Eyes: <select name="eyes" list="eyes">
<option id="eyes1"value="Angry">Angry</option>
<option id="eyes2"value="Excited">Excited</option>
<option id="eyes3"value="Tired">Tired</option>
<option id="eyes4"value="Dead">Dead</option>
<option id="eyes5"value="PinPoint">Pin Point</option>
</select></p>
<p id="tattootext">Tattoo: <select name="Tattoos"list="tattoos">
<option id="tattoo1"value="Fire">Racing Fire</option>
<option id="tattoo2"value="Mom">Mom</option>
<option id="tattoo3"value="Scales">Scaley</option>
<option id="tattoo4"value="Slimy">Slimy</option>
<option id="tattoo5"value="Snail">Snail</option>
</select></p>
<p>Name:
<input type="text" name="name" size="20" maxlength="30" autofocus="autofocus" ></p>
<script type="text/javascript">
function changeLevel(){
if(document.getElementById("body").value == "Snail"){
document.getElementById("mouthtext").style.display = "none";
document.getElementById("eyestext").style.display = "none";
document.getElementById("tattootext").style.display = "inline";
}
else{
document.getElementById("mouthtext").style.display = "inline";
document.getElementById("eyestext").style.display = "block";
document.getElementById("tattootext").style.display = "none";
}
}
changeLevel()
</script>
<input type="submit" name="submit" value="Make my character!"/>
</form>
我在它下面有这个 PHP,它应该简单地打印出选择的颜色,但没有
<?
if (isset($_POST['myform'])){
$color = $_POST['color'];
?><?= $color;?><?}
?>
当我加载页面时,它说“颜色”是未定义的变量,即使我的名称肯定等于“颜色”。为什么我无法加载任何帖子?
答案 0 :(得分:1)
你永远不应该使用这个:
isset($_POST['myform'])
因为你没有发送它。尝试使用:
count($_POST) > 0
这是一个更好的检查或检查请求方法。一个可能的解决方案是:
<?php
if (count($_POST) > 0) {
$color = $_POST['color'];
echo $color;
}
?>
或者更好的方法是:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$color = $_POST['color'];
echo $color;
}
?>
另外,也不要使用 isset($_POST["submit"])
或类似的东西。某些浏览器不会将 submit 的值作为表单数据的一部分发送,以防万一,如果您使用 <button>
或 <input />
而没有 value
或 name
。简单来说,它不可靠。