当我尝试在我的数据库上注册新记录时,PHP会替换文本

问题描述 投票:0回答:2

我正在使用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);
?>

我只需要访问这样的链接传递一些信息:qazxsw poi

问题是:总是用PHP替换字符:http://www.mysite.com.br/app/ws/register.php?user_id=MyName&url=http:://urlHere.com"%2F""/""%20"。然后当我把网址带回我的应用程序时,我无法下载网址的内容,因为它被php“破坏”了。我怎样才能解决这个问题???

PS:在我的数据库中,从php接收url的字段是Varchar:300 lenght。

php mysql database phpmyadmin
2个回答
1
投票

如果您的URL首先被正确编码,则不必解码。我猜你只是用JavaScript中的连接将它粉碎到你的查询字符串中。这是错的。

有两件事可以解决这个问题第一种是使用POST发送数据,以便URL可以是任意长度。第二个是让你的JavaScript库正确地进行编码,将其作为一个不同的参数传递。例如,在jQuery中你可以这样做:

"space"

在哪里负责正确编码任何变量。如果您没有进行AJAX样式调用,常规表单提交也会执行此操作。


0
投票

这是因为php会自动解码包含其参数的URL。您可以在url get参数上使用$.ajax({ url: '/register.php', method: 'post', data: { 'url': 'http://...', 'user_id': user_id } }); 来获取网址的编码版本。 urlencode()

© www.soinside.com 2019 - 2024. All rights reserved.