php会替换文本

lmyy7pcs  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(300)

我正在使用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""space" . 然后,当我把这个url带回到我的应用程序时,我就不能下载url的内容了,因为它被php“破坏”了。我该怎么解决这个问题???
ps:在我的数据库中,从php接收url的字段是varchar:300长度。

k4emjkb1

k4emjkb11#

这是因为php会自动解码包含参数的url。你可以用 urlencode() 在url get参数上获取url的编码版本。http://php.net/manual/en/function.urlencode.php

h4cxqtbf

h4cxqtbf2#

你不应该解码你的网址,如果它是正确编码在第一位。我猜你只是用javascript中的连接将它粉碎成你的查询字符串。这是错误的。
有两件事可以解决这个问题。第一种是使用post发送数据,这样url可以是任意长度的。第二种方法是让javascript库正确地进行编码,将其作为一个独特的参数传入。例如,在jquery中,可以执行以下操作:

$.ajax({
  url: '/register.php',
  method: 'post',
  data: {
    'url': 'http://...',
    'user_id': user_id
  }
});

它负责正确编码任何变量。如果您不进行ajax风格的调用,那么常规表单提交也可以做到这一点。

相关问题