За последние 24 часа нас посетили 17565 программистов и 1653 робота. Сейчас ищут 895 программистов ...

Корректность кода

Тема в разделе "Вопросы от блондинок", создана пользователем BAnder, 4 дек 2007.

  1. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
  2. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    не надо его вообще показывать, если не отлаживаешь.
    убрать эхо не развалится.
    потому что ты не справляешься формировать запрос без ошибок так же, как он у тебя выглядит в ПМА. Проверяй.
     
  3. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    simpson
    armadillo
    раздуплился, спасибо
    echo '<br />'.$sql.'<br />'; действительно помогло :)
     
  4. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    вот кусок кода:
    PHP:
    1. //$sqls="insert into user (nick, ip, pas, date, surname, name, father, age, id) values('$login', '$ip', '$pas', now(), '$sname', '$name', '$father', $age,null)";
    2. $sqls="insert into user set nick='$login',ip='$ip',pas='$pas', date=now(), surname='$sname', name='$name',father='$father',age='$age'";
    3. echo "<br>".$sqls."<br>";
    4. $rr=mysql_query($sqls);
    При чем одинаково не работает что с одним вариантом строки, что с другим. Пишет при этом
    insert into user set nick='ИФтвук',ip='127.0.0.1',pas='длорт', date=now(), surname='лр', name='р',father='жщр',age='49'
    (ну или что-то типа того). В таблице есть еще одна колонка id auto_increment not null primary key.
    В конечном итоге весь код не работает кроме предъявленного куска - просто не записывает в таблицу ничего :(
     
  5. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    а если я вставлю в форму в поле age
    "union select password from mysql.users"
    ?


    повторить.
    вставить выведенный на страничку запрос в ПМА и прочесть сообщение об ошибке.
    или вывести его командой
     
  6. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    нуу... я бы названия таблиц писал `как надо` :)
    и все "данные" заковычил - date='now()' - чай не Си, сам разберется где число, а где фигня.
    переменные "вручную" вклинивал:
    Код (Text):
    1.  nick='".$login."',ip='".$ip."'
    к тому же, если не ошибаюсь, добавляют обычно так:
    Код (Text):
    1. INSERT INTO `table` () VALUES()
    :)
     
  7. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    так, что-то дела совсем плохи. Запись добавляется только один раз почему-то :(
    PHP:
    1. <html><head>
    2. <link rel=stylesheet type='text/css' href='style.css'>
    3. </head><body>
    4. <?php
    5. $again="<hr><p class='menu'><center><a href='reg.php'>Регистрация</a></center></p>";
    6. include "config.php";
    7. $login=$_POST['login'];
    8. $ip=$_SERVER["REMOTE_ADDR"];
    9. $pas=$_POST['pas'];
    10. $sname=$_POST['surname'];
    11. $name=$_POST['name'];
    12. $father=$_POST['father'];
    13. $age=date('Y')-$_POST['age'];
    14. if ($login=='' or $pas=='' or $age=='')
    15. {
    16. echo "Вы не ввели все требуемые для регистрации данные".$again;
    17. }
    18. else
    19. {
    20. $sql="select (count(nick)+count(ip)) as 'numero' from user where nick='$login' or ip='$ip'";
    21. //echo '<br>'.$sql.'<br>';
    22. $lq=mysql_query($sql);
    23. while($reg=mysql_fetch_object($lq))
    24. {
    25. $nr=$reg->numero;
    26. }
    27.  
    28. if($nr==0)
    29. {
    30. $sqls="insert into user set nick='$login',ip='$ip',pas='$pas', date=now(), surname='$sname', name='$name',father='$father',age='$age'";
    31. echo "<br>".$sqls."<br>";
    32. $rr=mysql_query($sqls);
    33.  
    34. echo "Регистрация прошла успешно<a href='reg.php'>Регистрация</a>"; 
    35. }
    36. else
    37. {
    38. echo "Пользователь с таким именем существует или вы регистрируетесь 2-й раз, или вводите не правильные регистрационные данные. Попробуйте еще.".$again;
    39. }
    40. }
    41. ?>
    42. </body></html>
    Потом пишет, что все успешно, но запись не добавляет.

    armadillo, запись эту добавить не получится - там тип ввода данных другой, а в других формах - ограничение по размеру. Хотя если подумать - эот не проблема. Вообще в этом варианте пока защиты нет никакой, это черновой для понимания процесса, всех его заковырок. А что тот код делает?
     
  8. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    повторить.

     
  9. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    1062: Duplicate entry '0' for key 1
    можно расшифровать это сообщение? самы мы не местные, подходящую стенку найти сложно ;)
     
  10. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    в поле с уникальным ключом (индексом) продолжаешь пытаться добавить нуль.
     
  11. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    armadillo
    а как этого избежать? ведь по умолчанию там должно происходить автоматическое увеличение, а если плюсовать 1 вручную, так это ж извращение
     
  12. QQQ

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

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    BAnder
    поле autoincrement?
     
  13. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    и заодно не забывай указывать для этого поля значени при INSERT - null или 0.
     
  14. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    QQQ
    точно, после alter table-а сбросилось, а я внимание не обратил.
    Киньте плиз ссылкой на список ошибок, что б не стучать сюда каждый раз в случае чего. Желательно на русише.
    ЗЫ. опять невнимательность :(
     
  15. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    Sergey89
    а зачем? по принципу избыточности если вдруг пхп забудет предупредить, а мускул сделать?
     
  16. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
     
  17. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    Sergey89
    понял, спасибо. В моих доках это немного по другому звучало :)
     
  18. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    Можно ли вывести часть запроса к мускулу?
    Например:
    PHP:
    1. ...
    2. while($row=mysql_fetch_row($res)){
    3. echo $row[0]." - ".$row[1]."<br>";
    4. }
    Вот в данном примере выводиться будет все, что будет соответствовать запросу, а как к примеру вывести только скажем 5ю строку? Варианты с изменением самого запроса- это само собой разумеется, но если выводить содержимое нужно в нескольких местах, при чем не везде в полном объеме... Создавать-то новый запрос не целесообразно с точки зрения производительности.
     
  19. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    гони все в массив и бери из него.
    в чем проблема?
     
  20. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    armadillo
    оказывается нет проблем, все чудесно :)
    ...просто не подумал об этом, нужно было чуть дольше помедитировать.
     
  21. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    Народ, ткните плиз в то место русскоязычного мануала, где описывается место хранения сессий на сервере и их время жизни.
     
  22. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Нету по русски там этого.
     
  23. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    Sergey89
    ну хотя бы на инглише :(
     
  24. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Время жизни сессии уже обсуждалось на форуме. По умолчанию пых хранить сессии в ФС.
     
  25. BAnder

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

    С нами с:
    23 дек 2006
    Сообщения:
    79
    Симпатии:
    0
    Sergey89
    а "ФС" для ламера можно расшифровать?