为什么HTML选择返回随机字符串?

时间:2019-05-26 18:55:37

标签: php html

我的网页上有一个<select>表单,其中包含4个选项,值从1到4,当选择一个选项时,该表单应返回一个数字,但返回6个随机字符。

该页面不包含任何JavaScript,并且它在我的本地网络上运行,并且我还禁用了浏览器中的JavaScript。

我用来检索值的PHP如下:

if (isset($_POST[$key])) {
    return $_POST[$key];
}

我删除了任何形式的验证,我只用$_POST检索值,如果设置了该值,则会打印出6个随机字符(每次我提交表单时)。

表单如下:

<form action="/select_country" method="post" >
<select name="Country" class="country-selection">
    <option required="" selected="" disabled="" style="color: #b5b5be;">Country Location</option>
    <option value="1" >Asia</option>
    <option value="2" >Australia</option>
    <option value="3" >United States</option>
    <option value="4" >Europe</option>
</select>
</form>

预期结果:1234

实际结果:czWe8malBwKD,依此类推...

编辑:

$_GET是一个错字,对此感到抱歉。已更正。

我正在使用相同的PHP代码从相同的表单中检索其他输入数据,其他标签是简单的文本和数字<input>,它们工作得很好:

<input name="Title" type="text" placeholder="Insert Title" maxlength="100" required="">
<input name="Description" style="width:100%" type="text" placeholder="Insert Description" maxlength="1000" required="">

2 个答案:

答案 0 :(得分:2)

您应该使用$_POST["Your Input item Name Here"],因为您的表单使用的是POST方法,而不是GET

按原样保留您的HTML,请尝试以下操作:

//your name attribute = "Country" for select element
if (isset($_POST["Country"])) {
    return $_POST["Country"];
}

答案 1 :(得分:1)

您的表单具有选择输入,并设置为使用POST。 提交后,PHP将向您显示在值中选择的内容 $_POST["Country"]

您的第一个选项缺少一个值-因此,如果提交该值,则可能不会像他们回答那样显示。我建议添加value="",以便它将在POST中,并且您可以验证是否已选择了一个选项。另外,您需要一个提交按钮。

<form action="/select_country" method="post" >
<select name="Country" class="country-selection">
    <option value="" required="" selected="" disabled="" style="color: #b5b5be;">Country Location</option>
    <option value="1" >Asia</option>
    <option value="2" >Australia</option>
    <option value="3" >United States</option>
    <option value="4" >Europe</option>
</select>
<input type="submit">
</form>

然后:

<?php 
if (isset($_POST["Country"]) {
    if ($_POST["Country"] == "") {
        // error you must select an option
    }
    //other validation here but this should be 1,2,3 or 4
    // keep in mind anyone can mess with the form and submit other things maliciously so do validate

}