За последние 24 часа нас посетили 59214 программистов и 1830 роботов. Сейчас ищут 889 программистов ...

Фильтрация данных

Тема в разделе "PHP для новичков", создана пользователем dobs, 16 сен 2008.

  1. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Насколько безопасно юзать данный код?

    Для изменения информации:
    PHP:
    1. <php
    2.  
    3. $osebe = $_POST['osebe'];
    4. $osebe = htmlspecialchars($osebe);
    5. $osebe = addslashes($osebe); // Экранируем спец символы
    6. ...
    7. $result = mysql_query ("UPDATE `users` SET `name` = '$name',...
    8.  
    9. ?>

    Для вывода результата:
    PHP:
    1. <?php
    2. ...
    3. $osebe = stripslashes($myrow_ui[osebe]); // Удаляет экранирование символов
    4.  
    5. ...
    6. echo "<textarea name=\"osebe\" rows=5 cols=20>$osebe</textarea>";
    7. ...
    8. ?>
    P.S. Был тут http://phpfaq.ru/slashes


    Спасибо за ответы
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Нифига addslashes не экранирует (точнее экранирует но далеко не всё что надо бы) иди обратно на http://phpfaq.ru/slashes и читай ещё раз (пока не дойдёт)
     
  3. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    написал длинный пост, но по рассеянности закрыл вкладку :(
    переписывать лень. dobs, смотри про mysql_real_escape_string(), magic_quotes, плейсхолдеры

    а по делу
    PHP:
    1. <php
    2.  
    3.  $osebe = $_POST['osebe'];
    4.  $osebe = htmlspecialchars($osebe);
    5.  $osebe = addslashes($osebe); // Экранируем спец символы
    6.  $result = mysql_query ("UPDATE `users` SET `name` = '$name',...
    7. ?>
    юзать небезопасно. $name не фильтруется :)
     
  4. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Ет только пример :wink:
     
  5. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
  6. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    PHP:
    1.  
    2. <?php
    3. // Запись данных
    4. $name = (isset($_POST['name']) ? trim((string)$_POST['name']) : '');
    5. $osebe = (isset($_POST['osebe']) ? trim((string)$_POST['osebe']) : '');
    6.  
    7. if (0 !== strlen($name) && 0 !== strlen($osebe))
    8.     mysql_query('UPDATE `users`
    9.                         SET
    10.                             `name` = "' .mysql_real_escape_string($name) .'",
    11.                             `osebe` = "' .mysql_real_escape_string($osebe) .'"');
    12. // Вывод данных
    13.  
    14. $result = mysql_query('SELECT `osebe` FROM `users` WHERE `name` = "Vasja" LIMIT 1');
    15.  
    16. $row = '';
    17.  
    18. if( mysql_num_rows($result))
    19. {
    20.     $row = mysql_fetch_row['result'];
    21.     $row = htmlspecialchars($row[0]);
    22. }
    23. ?>
    24. <textarea name="osebe" rows="5" cols="20"><?= $row; ?></textarea>
    25.  
     
  7. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    точнее
    Код (Text):
    1. $row = mysql_fetch_row($result);
    А так спасибо за ответ...
     
  8. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    ну да :). торопился.