使用POST进行php处理的奇怪之处
我有一个在测试服务器上工作的项目,但在转移到另一个服务器上时停止工作。 我认为主要是PHP,但我想在这里征求你的意见。 因此,我的主页是一个用于登录的HTML,它有一个带有POST的表单,可以调用php脚本文件,如下所示:使用POST进行php处理的奇怪之处,php,post,Php,Post,我有一个在测试服务器上工作的项目,但在转移到另一个服务器上时停止工作。 我认为主要是PHP,但我想在这里征求你的意见。 因此,我的主页是一个用于登录的HTML,它有一个带有POST的表单,可以调用php脚本文件,如下所示: <form method="POST" action="prologin.php"> Name: <input type="text" name="nam"><br> Password: <input type="pa
<form method="POST" action="prologin.php">
Name: <input type="text" name="nam"><br>
Password: <input type="password" name="pas"><br>
<input type="submit" value="Login" data-inline="true" data-icon="gear">
</form>
<?php
session_start();
include 'mycon.php';
$nume1=mysql_real_escape_string( $_REQUEST['nam'] );
$pass1=mysql_real_escape_string( $_REQUEST['pas'] );
$s = "SELECT * FROM uzers WHERE uzname = '$nume1' and pass = md5('$pass1')";
var_dump($s);
... followed by other validations and stuff.
有什么不对劲吗?
为什么php不接收请求变量?因为这就是我认为会发生的事情。
我能做些什么来修复它?当您在提交表单之前首次加载页面时会发生这种情况,在这种情况下,$\u请求或$\u POST不存在,您可以通过检查变量来避免这种情况:
if(isset($_REQUEST['nam']) && isset($_REQUEST['pas'])){
include 'mycon.php';
$nume1=mysql_real_escape_string( $_REQUEST['nam'] );
$pass1=mysql_real_escape_string( $_REQUEST['pas'] );
$s = "SELECT * FROM uzers WHERE uzname = '$nume1' and pass = md5('$pass1')";
//other staff
}
删除php,直到找到有问题的代码。我会将$\u REQUEST的实例替换为$\u POST,并在加载页面时回显它们,以确保它们被正确传递。您的查询使用空白参数进行响应,这一事实使我认为$\u请求是一个问题
<?php
echo $_POST['nam'];
echo $_POST['pas'];
显然我应该在表单中添加以下内容:
data-ajax="false"
为了防止jQuery mobile劫持我的提交行为。
在我将此添加到表单后,POST工作正常。
谢谢你的时间和想法,但它们并没有帮助我解决我的问题。不过,您可能会发现这些信息在将来很有用 基本调试尝试的下一步是检查变量的值<代码>变量转储($\请求)代码>变量转储($\u POST);`。然后,删除include并重复。您知道服务器上运行的PHP的哪个版本的代码不起作用吗?$\u请求
superglobal仅在PHP版本4.1.0以后提供。出于好奇,为什么不使用$\u POST
而使用$\u请求
呢?为什么要启动会话?检查您对会话的权限我知道。这正是我的印象。然而,我不知道我做错了什么。我创建了一个名为prologin.php的新php文件,其中我只有以下内容:
,似乎POST中没有发布任何内容。这怎么可能?您可以在HTML中看到我的表单。看起来没有错。。。怎么了?你有使用jQuery Mobile和PHP的经验吗?我相信这是我的问题。如果我从HTML中删除jQuery.mobile脚本行,那么帖子就可以正常工作。但我不能这么做,因为这会毁了我的应用程序。。。那么该怎么办呢?我删除了所有其他代码,结果出现了一个问题:jQuery.mobile脚本正在这样做。如果我从HTML中删除对jquery.mobile.js的引用,那么帖子就会通过。如果我把它放在我的HTML中,那么帖子就会空到PHP中。这意味着什么,以及如何解决?好吧,我的朋友,我很高兴你解决了它,但在你的帖子中我们看不到你在使用jQuery
data-ajax="false"