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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我尝试在我的数据库上注册新记录时,PHP会替换文本相关的知识,希望对你有一定的参考价值。

我正在使用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。

答案

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

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

"space"

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

另一答案

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

以上是关于当我尝试在我的数据库上注册新记录时,PHP会替换文本的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 我如何停止循环以两次注册数据?

当我尝试在我的项目 laravel 6.x 上使用 redis 时,它会显示此错误消息

当我点击我的应用程序中的注册用户片段时应用程序崩溃..其中包含recyclerview

如何注册通知类别?

注册php、mysql密码、数据库

Laravel:添加make:auth后在我的登录/注册页面中出错