【问题标题】:Why HTTP Post to Url does not passing value of input?为什么 HTTP Post to Url 不传递输入值?
【发布时间】:2015-07-31 10:12:09
【问题描述】:

得到 GIS-R10(访客互联网网关)设备,用于在访问互联网之前显示访客 wifi 登录页面。有一个选项可以基于我所做的 HTML 创建自定义登录页面,还有一个选项可以使用 POST.PHP 文件将访客输入的值(如姓名和电子邮件)添加到数据库(mysql)。

现在在名为 login.html 的文件中显示登录表单,您必须在代码中包含 <!--LOGIN--> 标记。如下:

<table border="0" cellspacing="0" cellpadding="0" class="login_table" align="center">
<tbody><tr>
<td class="uni_01" style="border-bottom:1px #cccccc solid;">
<!--LOGIN-->
</td>
</tr>
</tbody></table>

然后我确实在设备管理页面上选择了一个选项将数据重定向到myserver.com/post.php,不幸的是,数据库中的行被添加但收到了空的电子邮件和姓名字段。

当使用我的 post.php 文件选择“HTTP POST TO URL”选项时,登录页面脚本的索引正在添加代码:

<!--include(myserver/post.php);-->

&lt;!--LOGIN--&gt; 标签添加的表单是

<form method="post" name="registered" onsubmit="return validateRegistered()">
            <input type="hidden" name="url" value="http://go.microsoft.com/fwlink/?LinkID=219472">
            <input type="hidden" name="ip" value="192.168.96.10">
            <input type="hidden" name="code" value="d">
            <br><br>
            <table cellpadding="4" border="0">

                <tbody><tr><td>Name: </td><td><input type="text" name="data1" style="width: 120px"></td></tr>

                <tr><td>Email: </td><td><input type="text" name="data2" style="width: 120px"></td></tr>

                <tr><td colspan="2" align="center"><input type="submit" value="Connect" style="font: 12px arial, helvetica, sans-serif"></td></tr>
            </tbody></table>
            <br>
            You must agree to our <a href="/disclaimer.cgi" target="_blank" id="termslink"><u>terms and conditions</u></a> to use this service.    
            </form>

最后在我确实使用的 post.php 文件中:

$name=$_POST['data1'];
$email=$_POST['data2'];

将 data1 和 data2 值添加到我的数据库并接收空值。

任何想法或指向正确方向将不胜感激。

【问题讨论】:

  • validateRegistered() 函数有什么作用?
  • 您也应该在输入字段中添加正确的结束标签 />,而不是 >
  • @Sepulture 它会检查电子邮件是否为空或是否包含@值输入字段由脚本自动完成,您无权访问,您可以通过&lt;!--LOGIN--&gt;代码显示它们跨度>
  • 能把 validateRegistered() 函数的内容贴出来吗?
  • 确定&lt;script type="text/javascript"&gt; function validateRegistered() { var data = document.forms["registered"]["data1"]; if ( data.value == null || data.value == "" ) { alert("Box cannot be empty"); data.focus(); return false; } var data = document.forms["registered"]["data2"]; if ( data.value == null || data.value == "" ) { alert("Box cannot be empty"); data.focus(); return false; } return true; } &lt;/script&gt;

标签: http url post


【解决方案1】:

如果您不想将表单提交到 .php 文件,则必须设置表单元素的操作属性:

<form action="post.php" method="post" name="registered" onsubmit="return validateRegistered()">

如果请求被分派到您的 .php 文件,您也可以尝试使用 $_GET 或 $_REQUEST 而不是 $_POST

编辑: 请再试一次:

<?php 

print_r($_REQUEST);
exit;

// here MySQL db connector 

$primarykey1 = $_REQUEST['data1']; 
$primarykey2 = $_REQUEST['data2']; 

...

如果变量不在$_REQUEST数组中,你得联系客服,我看不出有什么错误。

另请注意:请在将数据保存到数据库之前对其进行转义,在您的情况下使用 mysql_real_escape_string($primarykey1),或者更好地使用 mysql PDO 抽象层

【讨论】:

  • 我不认为你明白这一点,我无法编辑 &lt;form&gt;&lt;/form&gt; 中的任何字段此表单是通过 &lt;!--LOGIN--&gt; 标签添加的,您必须将其添加到登录页面的自定义模板中。
  • 如何将表单提交到 post.php?还有其他提交表单的 JavaScript 吗?
  • 我相信后台一定有一些东西,因为在管理页面上你可以设置很多选项,也可以选择“Http post to url”选项,而不是你给你的 post.php 文件的地址。 . myserver.com/post.php 并且它确实有效,因为每次我单击连接时,都会将记录添加到具有新 id 但没有传递给那些的名称或电子邮件值的数据库中。
  • $primarykey1 = $_REQUEST['data1']; $primarykey1 = $_GET['data1'];在 post.php 文件中不起作用。
  • 是否包含示例? - 我读了一些关于 login.zip 文件的内容。但是,您可以 print_r($_REQUEST);也许他们将变量保存在其他地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 2017-11-03
  • 2017-01-11
  • 2021-08-26
  • 2019-08-06
  • 1970-01-01
相关资源
最近更新 更多