我正在使用 React Native 开发一个应用程序,我的工作是让这个应用程序在我的服务器中的数据库上注册一条新记录。为此,我的 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"
为 “空格”
。然后,当我将 url 带回我的应用程序时,我无法下载 url 的内容,因为它已被 php“损坏”。我该如何解决这个问题???
PS:在我的数据库中,从 php 接收 url 的字段是 Varchar:300 长度。
最佳答案
如果您的网址一开始就已正确编码,则您不必对其进行解码。我的猜测是你只需将它通过 JavaScript 连接到查询字符串中即可。这是错误的。
有两件事可以解决这个问题。第一种是使用 POST 发送数据,以便 URL 可以是任意长度。第二个是让您的 JavaScript 库正确进行编码,将其作为不同的参数传递。例如,在 jQuery 中你可以这样做:
$.ajax({
url: '/register.php',
method: 'post',
data: {
'url': 'http://...',
'user_id': user_id
}
});
负责正确编码任何变量。如果您不进行 AJAX 样式调用,则常规表单提交也会执行此操作。
关于当我尝试在数据库中注册新记录时,PHP 替换了文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48326770/