$ _REQUEST ['url']收到了错误的网址

时间:2014-02-10 17:11:59

标签: javascript php url request

我有一个像这样定义的表单:

<table>
<form id="myForm" method="post"> 
<tr><td> Item Name: </td><td><input type="text" name="itemname" id="itemname"/></td></tr>
<tr><td> Description:</td><td> <input type="text" name="description" id="description"/></td></tr>
<tr><td> Sell Time:</td><td> <input type="test" name="selltime" id="selltime"/></td></tr>
<tr><td> Price:</td><td> <input type="test" name="price" id="price"/></td></tr>
<tr><td> Image URL:</td><td> <input type="test" name="url" id="url"/></td></tr>
<tr><td><input type="submit" value="Post" name="info" onclick="return post();"></td></tr>
</form>
</table>

如您所见, onclick 会调用函数post()。然后依次读取文件post.php并向其发送所需参数(itemnamedescriptionselltimeprice url )。最后,它们被插入到数据库中的某个表中。

这是文件post.php的开头:

<?php
session_start();
mysql_connect("localhost","root","password") or die("couldnt connect");
mysql_select_db("mynewdb") or die("couladnt find");
$output = '';
if(isset($_REQUEST['itemname']) && isset($_REQUEST['description'])
&& isset($_REQUEST['selltime']) && isset($_REQUEST['price']) &&
isset($_REQUEST['url'])){
$url = $_REQUEST['url'];
...
?>

问题是url有时会出错。例如,如果我输入此网址:coca cola

http://www.comax.co.il/Max2000Upload/1443/Prt_Pic%5C1%5C864.jpg

我插入了这个:

http://www.comax.co.il/Max2000Upload/1443/Prt_Pic1864.jpg

为什么?

修改

根据要求,以下是post()功能:

<script>
function post()
{   
    var itemname = document.getElementById('itemname').value;
    var description = document.getElementById('description').value;
    var selltime = document.getElementById('selltime').value;
    var price = document.getElementById('price').value;
    var url = document.getElementById('url').value; 
    if (window.XMLHttpRequest)
    {
    xmlhttp=new XMLHttpRequest();
        }
    else
    {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
        document.getElementById("posted").innerHTML=xmlhttp.responseText;
    }
    xmlhttp.open("POST","post.php?itemname="+itemname+ "&description="+description+ "&selltime="+selltime
            +"&price="+price+"&url="+url,true);
    xmlhttp.send();
    return false;
}
</script>

1 个答案:

答案 0 :(得分:0)

“%5C”代表“\”,它可能会转义以下数字,尝试用“\\”替换它们,这应该在网址中保留反斜杠。