繁体   English   中英

PHP-脚本未执行

[英]PHP - script not being executed

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

但是,我无法执行任何POST请求。 我没有看到任何结果或更改。 我尝试在PHP脚本中执行echo ,但是即使使用GET也无法在html表单上打印出来

我的代码在哪里出错?

.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>

您应该在mysql_connect 之后使用mysql_real_escape_string

换句话说:在您调用mysql_real_escape_string时,您应该已经与mysql服务器建立连接,否则它将返回false +警告,并且false被评估为空字符串,这就是为什么您在代码的后端未获得任何实际值的原因。

UPDATE :在文档中注意到该函数的第二个参数(即link_identifier(mysql连接资源))位于php.net mysql_real_escape_string中:

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替换$_POST $_GET

Javascript访问document.frm ,但是该表单未使用名称'frm'定义。 我猜这是javascript停止并且不会触发xhr的地方。

您没有从AJAX请求中输出任何内容。 如果使用XMLHttpRequest ,则需要定义它的onreadystatechange()方法,并在某些情况下输出结果。 但是,相反,我建议您使用jQuery Ajax之类的东西,它要容易得多,并且支持各种浏览器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM