[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    это то понятное дело. У меня вопрос немного другого плана был)

    Смари. Предположим я на странице админа. Мне нужно занести в БД код формы, чтобы она потом обображалась на сайте. Код формы предположим такой:
    А заносить я код этой формы буду тоже через форму естественно и после нажатия кнопки "отправить" код введённой формы отправляется в БД.
    А выводить форму на сайте я буду при помощи echo"$q[forma]";
    Дык если код в БД будет храниться в таком виде в котором я его занёс (см.выше), то интерпритатор выведет ошибку, т.к. там будет путаница с кавычками, а для формы мне нужно использовать двойные кавычки))
    Дык вот из всего этого хотел узнать...1) как мне при занесении кода формы в БД экранировать все кавычки, чтобы не делать это вручную. и 2) Если кавычки не экранировать, то функция mysql_fetch_array() всё таки автоматически их будет экранировать или это было из-за пхп-му-админа?

    Бля, я по ходу сам запутался чего я хочу=//
    Короче если кто понял мои бредни, то буду очень благодарен если подскажете))
     
  2. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    .:EnoT:., чё ты щас сказал - ХЗ!
    mysql_fetch_array() ничё не экранирует, оно выводит
    В общем вот...
    PHP:
    <?
    $form '<form action="lala.php" method="POST">
    <input type="text" name="lala">
    <input type="submit"></form>'
    ;
    $form mysql_real_escape_string($form);
    mysql_query("INSERT INTO lala VALUES('$form')");
    ?>
    Так-то понятно?
     
    2 people like this.
  3. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Ponchik
    Во-во, как раз насчёт mysql_real_escape_string() как раз и спрашивал, её ли использовать))
    Спасибо :)
     
  4. XopoIII

    XopoIII Elder - Старейшина

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    есть вывод массива из таблицы, вывод текста, возле каждого выведенного текста я влепил чекбокс, думал все просто, а тут оказалась проблема, мне нужно чтобы где я поставил галочки, при нажатии, выделенный текст удалялся, а как это сообразить?=) тоесть как при нажатии чекбокса посылать данные для удаления? хз че непонятно написал скажите))
     
  5. mouse.pro

    mouse.pro Elder - Старейшина

    Joined:
    6 Dec 2006
    Messages:
    113
    Likes Received:
    73
    Reputations:
    14
    Покажи что у тебя уже написанно
     
  6. XopoIII

    XopoIII Elder - Старейшина

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    что показать? вот вывод на экран:
    PHP:
    echo "".$row['name']." - от: ".$row['login']."<br>
    <input type=checkbox name='delletter' value=''>удалить
    <br>"
    .$row['content']."\n"
    как сделать чтобы скрипт при нажатии чекбокса знал, что именно это нужно удалить из бд?
     
  7. n1†R0x

    n1†R0x Elder - Старейшина

    Joined:
    20 Jan 2007
    Messages:
    728
    Likes Received:
    376
    Reputations:
    235
    смотри, как вариант. вкратце: передаем чекбоксы массивом. поэкспериментируй, разберешься.

    PHP:
    <?php
    if (isset($_POST['arr']))
    {
    foreach(
    $_POST['arr'] as $key => $value)
        {
            print 
    $key."=".$value." ; ";
        }
    }
    ?>
    <br/><br/><form method='post'>
        1: <input type='checkbox'     name='arr[]' value='1' /><br/>
        2: <input type='checkbox'     name='arr[]' value='2' /><br/>
        3: <input type='checkbox'     name='arr[]' value='3' /><br/>
        4: <input type='checkbox'     name='arr[]' value='4' /><br/>
        $: <input type='submit'    name='submit' value='#' />
            </form>
    внутри foreach добавляешь проверку на всякий случай и все.
     
  8. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Хм, я бы я предложил такой вариант. Выводить рядом с каждым юзером ссылочку "удалить"
    PHP:
    while($row mysql_fetch_array($result))
    {
       echo 
    "".$row['name']." - от: ".$row['login']."<br>
      <br>"
    .$row['content']."\n
      <a href=\"?del=
    $row[id]\">Удалить</a> ";  
    }
    if(isset(
    $_GET['del']))
    {
      
    $id intval($_GET['del']);
      
    $query "DELETE FROM `table` WHERE id = '$id'";
      
    $result mysql_query($query);

      if(!
    $result
      {echo
    "Ошибка удаления";}
      else
      {echo
    "Успешно удалено";}
    }
     
    #1228 .:EnoT:., 16 Dec 2007
    Last edited: 16 Dec 2007
  9. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    ПОдправил код, ато больно смотреть
    PHP:
    echo "{$row['name']} - от: {$row['login']}<br>
    <input type=checkbox name=\"delletter[
    {$row['id']}]\" value=\"1\">удалить
    <br>
    {$row['content']}\n";
    В итоге мы получим массив $_POST['delletter'] в котором ключи будут ID отмеченых сообщений
     
    #1229 Ponchik, 16 Dec 2007
    Last edited: 16 Dec 2007
    1 person likes this.
  10. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    мой совет если хочешь чтобы код был нормальным никогда не пиши переменные внутри строки
    PHP:
    echo $row['name']." - от: ".$row['login']."<br>
    <input type=checkbox name=\"delletter["
    .$row['id']."]\" value=\"1\">удалить
    <br>"
    .$row['content']."\n";
     
    1 person likes this.
  11. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    I-I()/Ib, на вкус и на цвет товариа нет!
    И ваще, я ступил, а ты хуле тупиш за мной... Нахера ключи делать IDшниками если можно массив идишников создать
    PHP:
    echo "{$row['name']} - от: {$row['login']}<br>
    <input type=checkbox name=\"delletter[]\" value=\"
    {$row['id']}\">удалить
    <br>
    {$row['content']}\n";
    ВОт... print_r($_POST['delletter']); А чё я тогда про ключи написал, сам незнаю... Давно просто чекбоксами не занимался :)
     
    1 person likes this.
  12. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    не во вкусе и не в зенеде дело, ступил я только в том что забыл поменять двойные кавычки на одинарные, вынеся переменные из строк, как хотел сначала сделать. Дело в том что это обрабатывается гораздо быстрее...
     
  13. Demetra

    Demetra Elder - Старейшина

    Joined:
    27 Aug 2007
    Messages:
    48
    Likes Received:
    8
    Reputations:
    0
    а скажите зачем проверять строку на хтмл тэги если до этого она проверялась регулярным?может и так сойдёт?
     
  14. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Demetra, смотря каким регулярным она проверялась... Лучше два раза проверить, чем потом огребать проблемы от своей собственной беспечности... :)
     
  15. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    А что значит "проверять на хтмл теги". Если ты имеешь ввиду именно проверять, то это тоже регулярные выражения. Наверно ты имела ввиду фильтровать(htmlspecialchars))
    Лишняя фильтрация и проверка никогда не помешает, всё таки безопасность должна быть на первом месте)
     
    3 people like this.
  16. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    .:EnoT:., а может он имел в виду strip_tags? o_O
     
    1 person likes this.
  17. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Может быть....но уже в сотый раз замечаю что многие фильтрацию называют проверкой)

    Кстати всё давно хотел спросить.
    На всех сайтах с авторизацией под формой входа есть галочка "Запомнить".
    Так вот мне до сих пор не понятен смысл этой кнопки...
    Браузер - хм, браузер и так выдаст запрос за сохранение пароля и он будет автоматически появляться в форме каждый раз...
    Двиг - а как собственно двиг будет запоминать юзера? он либо авторизовал либо нет. Так что запоминать то тут собственно нечего. А запоминание в виде кукисов это и так понятно, куки есть, юзеру не надо авторизовываться, куков нету входи заново....
    В чём смысл этой галки? О_о
     
    1 person likes this.
  18. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    .:EnoT:., фраза "Браузер - хм, браузер и так выдаст запрос за сохранение пароля" убила
    Если так будеш сохранять, злобный хацкер сломает твой комп и уведёт все твои пароли! Сохраняют пароли на компе токо ламаки ИМХО!
    А кнопочка полезная... Есть разные способы как её сделать, например если на неё не нажать, создасться сессия, после закрытия браузреа она удалится, и надо будет логиниться заново, если тыкнуть на кнопку, инфа твоя запишется в куки и сессия будет автоматом создаваться каждый раз как заходиш... Забей в общем :)
     
    1 person likes this.
  19. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    можешь называть меня кем хочешь, но я сохраняю пароли в браузере, потому что я уверен в себе. Не все пароли конечно, например от хостинга и панели управления доменом у меня на дискете. А злобный хацкер пусть сколько угодно ломает. Я тебе больше скажу, у меня не разу не стоял файрвол, только антивирус. И за два года ни одного вируса/троя, прост уметь надо :)....качаю я все программы с офф сайтов, не хожу по всяким ссылкам, не с кем в инете не ссорюсь, не понтуюсь, не выёбываюсь.....кому я нужен))

    З.Ы. с кнопочкой примерно стало понятно...короче это фигня полная имхо
     
    1 person likes this.
  20. VampiRUS

    VampiRUS Elder - Старейшина

    Joined:
    31 Dec 2005
    Messages:
    210
    Likes Received:
    105
    Reputations:
    57
    .:EnoT:. если не ставить галку запомнить то должна быть создана сессия котороая уничтожается после закрытия браузера(мож коряво написал более правильно тебе гугл скажет), а если запомнить то уже в куках будет долгосрочный идентификатор пользователя, позволяющий ему каждый раз не авторизироваться.
    Предложение браузера сохранить пароль здесь вообще нипричём.
     
    1 person likes this.
Thread Status:
Not open for further replies.