2015-01-02 9 views
0

Итак, у меня есть этот код:PHP: str_replace не работает

<?php 
    include '../config.php'; 
    $query=$_GET['q']; 
    //replace 
    echo str_replace('\','',$query); 

    $sql=mysql_query($query) or die("Query not executed!"); 
    echo $query; 
    echo "\n //executed"; 

    mysql_close(); 

    ?> 

проблема на $ _GET, например, при использовании ', пример: «пользователи UPDATE Набор монет = 3 WHERE имя пользователя =' админ ВОЗВРАТ: «пользователи обновления набор монет = 3, где имя пользователя = \„\“админ=> должен быть„админ“„“

+6

То есть ** Необычайно ОПАСЕН ** код. Вы разрешаете пользователям передавать произвольный SQL в ваш БД и выполнять его. Что мешает кому-то уничтожить вашу БД? Обновление их пользовательской записи и предоставление полных привилегий? Вы должны быть ** THANKFUL **, что у вас устаревшая установка PHP, у которой все еще есть register_globals. Отбросьте этот код, сжечь его до пепла, разбросать пепел на разных континентах, а затем научиться писать безопасный PHP-код, прежде чем делать что-либо еще. –

+1

Разве это не приведет к синтаксической ошибке? – Flosculus

+0

Я не помню, если \ или/что сцепляется, но если это \, вы должны добавить лишний \ я считаю. –

ответ

3

„\“это специальный символ. Попробуйте вместо этого:

echo str_replace('\\','',$query); 
0

Вместо строки замены, я хотел бы предложить вам использовать строки взрываются

Синтаксис: array explode (string $delimiter , string $string [, int $limit ])

Вы можете посмотреть here

Смежные вопросы