我正在使用本机开发应用程序,我的工作是让这个应用程序在我的服务器上的数据库中注册一条新记录。为此,我的FTP(register.php)中有一个文件,用于在我的数据库中注册记录。
这是php代码:
<?
ini_set('memory_limit', '512M');
header("Content-Type: text/html; charset=UTF-8",true);
$user_id = $_GET['user_id'];
$url = $_GET['url'];
$db = mysqli_connect('mysql.urlAdress.com.br','dbName','password' ) or die( 'Conexion error' );
mysqli_select_db($db,'dbName');
if (!$db){
echo '[{"erro": "Error trying to connect to the database"';
echo '}]';
}else {
$result = mysqli_query($db,"insert into profile (user_id, url) values ('$user_id', '$url') ");
}
mysqli_close($db);
?>
我只需要通过这样的链接来传递一些信息:http://www.mysite.com.br/app/ws/register.php?user_id=MyName&url=http:://urlHere.com
问题是:php总是将"%2F"
替换为"/"
,将"%20"
替换为"space"
。然后,当我将网址带回我的应用程序时,我无法下载该网址的内容,因为它已损坏&#34;&#34;通过PHP。我怎么能解决这个问题?
PS:在我的数据库中,从php接收url的字段是Varchar:300 lenght。
答案 0 :(得分:1)
如果您的网址首先被正确编码,则不必解码。我猜你只是用JavaScript中的连接将它粉碎到你的查询字符串中。这是错误的。
有两件事可以解决这个问题。第一种是使用POST发送数据,以便URL可以是任意长度。第二个是让你的JavaScript库正确地进行编码,将其作为一个不同的参数传递。例如,在jQuery中你可以这样做:
df.loc['x', 'c'] = np.arange(6).reshape(2, 3) + 100
在哪里负责正确编码任何变量。如果您没有进行AJAX样式调用,常规表单提交也会执行此操作。
答案 1 :(得分:0)
这是因为php自动解码包含其参数的URL。
您可以在url get参数上使用urlencode()
来获取网址的编码版本。
http://php.net/manual/en/function.urlencode.php