PHP 无法从 POST 中识别出我的变量

时间:2021-03-19 17:40:55

标签: php

每当我尝试使用表单将数据发布到 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;?><?}
?>

当我加载页面时,它说“颜色”是未定义的变量,即使我的名称肯定等于“颜色”。为什么我无法加载任何帖子?

1 个答案:

答案 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 /> 而没有 valuename。简单来说,它不可靠。