簡體   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