2012-01-26 361 views
0

我有一个html表单,用户输入值/选项。选择后,这些值将被发送到服务器中的php脚本。该脚本将根据用户选择的值从mysql中检索一些数据。然后将这些来自mysql的值和数据整理在一起并用于将发送到移动设备的POST请求。我会用curl来做请求。PHP - 脚本没有执行

但是,我无法做任何POST请求。我没有看到任何结果或变化。我尝试在我的PHP脚本中做echo,但它不是在HTML表格上打印出来,即使我使用了GET

我的代码出错了吗?

的.html

<script type="text/javascript"> 

    function doSubmit() { 

     var env = document.frm.Env.value; 
     var appname = document.frm.appname.value; 
     var target = document.frm.target.value; 
     var messages = document.frm.messages.value; 

     var strURL = "sendMessage.php?Env=" +env+ "&appname=" +appname+ "&target=" +target+ "&Message=" +messages; 

     xmlhttp.open("GET",strURL,true); 
     xmlhttp.send(null); 

    } 
</script> 

</head> 

<body> 

    <form action=""> 
     Environment: <div id="Env"> 
      <select name="customers" onchange="showApplications(this.value)"> 
       <option value="Environment">Select an environment</option> 
       <option value="S">Sandbox</option> 
       <option value="P">Production</option> 
      </select> 
     </div> 

     </br> 

     Application Name: <div id="appname"> 
      <select name="appname" onchange="showTargets(this.value)"> 
       <option value="">Select application</option> 
      </select> 
     </div> 

     </br> 

     Target Device : <div id="target"> 
      <select name="target"> 
       <option>Select Device OS</option> 
      </select> 
     </div> 
     </br> 
     Message: <div id="messages"><input type="text" name="Message" maxlength="200" size="50"></input></div> 

     </br> 

     <input type = "button" value="Send" onclick="doSubmit();"> 
    </form> 

    </br> 

</body> 
</html> 

.PHP

<?php 
$env  = mysql_real_escape_string($_POST["env"]); 
$appname = mysql_real_escape_string($_POST["appname"]); 
$target = mysql_real_escape_string($_POST["target"]); 
$messages = mysql_real_escape_string($_POST["messages"]); 


$conn = mysql_connect("127.0.0.1:3306", "root", ""); 
mysql_select_db("PushApplication", $conn); 

if ($target == "All") { 
    echo "Hi"; 
} elseif ($target == "Apple") { 
    echo "Apple"; 
    $query = "select deviceID from Device where DeviceType='$target'"; 
    $result = mysql_query($query); 

    $num = mysql_numrows($result); 

    $i = 0; 
    while ($i < $num) { 
     $myResult = mysql_result($result, $i); 
     $url  = "http://10.28.68.28:8899/?Env='$env'&AppName='$target'&Token='$myResult'&Message=%7B%22aps%22%3A%7B%22alert%22%3A%22'$messages'%22%7D"; 
     echo $url; 
     curl $url 
     ++$i; 
    } 
} 

else 
    echo "Hi!"; 
?> 

</select> 
+0

什么是'xmlhttp'?你的'

4

您应该使用mysql_real_escape_stringmysql_connect

换句话说

:你应该已经到MySQL的连接服务器的时候你打电话给mysql_real_escape_string或者它会返回false +警告和false被评估为一个空字符串,这就是为什么你没有在你的代码后端得到任何真正的值。

UPDATE:它注意到在文件中以mysql_real_escape_stringphp.net为函数的第二个参数(这是link_identifier(MySQL连接资源)):

MySQL连接。如果未指定链接标识符,则假定由mysql_connect()打开的最后一个链接 。如果找不到这样的链接,则会尝试创建一个,就好像调用mysql_connect()时不带参数一样使用 。 如果发现或没有建立连接时,会产生一个E_WARNING 级别的错误

好了,这里有一些更多的问题与您的代码,以修复做到以下几点:

HTML

<form name='frm'... 

JS

var env = document.frm.customers.value; 
    ... 
    var messages = document.frm.Message.value; 

PHP

替换所有$_POST$_GET

+0

实际上,它没有太大的区别...... – Christian

+0

同意,mysql_real_escape_string是一个SQL相关的函数,只有当你连接到数据库时才会起作用。 – Eirinn

+0

嗨,我已经改变了它的位置。但无法收到任何回应。删除'mysql_real_escape_string'也没有帮助。任何方式,我可以打印出我的变量来检查他们的内容? – Hend

2

的Javascript访问document.frm,但形式不与名称 'FRM' 定义。我想这是JavaScript停止的地方,不会触发xhr的事情。

+0

+1指出可能的问题。但是仍然不起作用。不管怎么说,还是要谢谢你。 – Hend