PHP заменяет текст, когда я пытаюсь зарегистрировать новую запись в моей базе данных

0

Я разрабатываю приложение, использующее реакцию 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: В моей базе данных поле, которое получает URL-адрес от php, является Varchar: 300 lenght.

  • 5
    Маленький Бобби говорит, что ваш сценарий подвержен риску атак с использованием SQL-инъекций. Узнайте о подготовленных заявлениях для MySQLi . Даже избежать строки не безопасно!
  • 3
    urlencode() должен быть решением.
Показать ещё 3 комментария
Теги:
database
phpmyadmin

2 ответа

1

Вам не нужно расшифровывать ваш URL, если он был правильно закодирован в первую очередь. Я думаю, вы просто разбиваете его на строку запроса с конкатенацией в JavaScript. Это не верно.

Две вещи могут это исправить. Первый использует POST для отправки ваших данных, чтобы URL мог иметь произвольную длину. Во-вторых, чтобы ваша библиотека JavaScript правильно кодировала кодировку, передайте ее как отдельный параметр. Например, в jQuery вы можете:

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

Там, где это необходимо для правильного кодирования любых переменных. Регулярное представление формы также будет делать это, если вы не выполняете вызовы стиля AJAX.

0

Это потому, что php автоматически декодирует URL, включая его параметры. Вы можете использовать urlencode() для параметра url get, чтобы получить кодированную версию вашего URL-адреса. http://php.net/manual/en/function.urlencode.php

  • 0
    Это поверхностное решение фундаментальной проблемы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню