?pHp + mysql

Discussion in 'PHP' started by mR_LiNK[deface_0nl, 8 Apr 2007.

  1. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    Собственно тривиальная задача - поиск по базе и вывод результата (на пхп)

    Я решил так (но чувствую что не то))!!)::
    PHP:
    $sql="select name from users where  name=$_POST['name']";
    $result=mysql_query($sql$conn);
    $n=mysql_num_fields($result);
    if (
    $n==0)
    {
    ...
    }
    else
    {
    echo 
    'user c таким именем уже существует!!';
    ..
    }
    подскажите альтернативные решения пож?!!

    зы: если что-то не так в коде или логике - просьба конкретизировать и предложить свое!!
    зыы: ну и сильно не ругайте, ток недавно скуль+пхп начал, пока путаюсь))
     
    #1 mR_LiNK[deface_0nl, 8 Apr 2007
    Last edited: 8 Apr 2007
  2. r0

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

    Joined:
    17 Jul 2005
    Messages:
    450
    Likes Received:
    149
    Reputations:
    147
    Ты думаешь что проблема с алгоритмом ? Все верно, если человека в базе нет - резалт(кол-во строк) - нуль , иначе..
    Только используй mysql_num_rows()
     
    1 person likes this.
  3. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    Всем + и спасибо!
     
    #3 mR_LiNK[deface_0nl, 8 Apr 2007
    Last edited: 8 Apr 2007
  4. r0

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

    Joined:
    17 Jul 2005
    Messages:
    450
    Likes Received:
    149
    Reputations:
    147
    =))))
    Неплохо было бы еще профильтровать параметр..
     
  5. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    $sql='select name from users where name=\''.mysql_escape_string($_POST['name']).'\'';
     
    1 person likes this.
  6. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    ))давайте еще распишем тут всю систему безопасного программирования)))

    зы:: спасиб, безопасность всегда..)), но пока ток логика
     
  7. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    С учетом выше сказанного и мануалов::
    PHP:
    $name=mysql_real_escape_string($_POST['name']);
    $mail=mysql_real_escape_string($_POST['mail']);
    $pass=mysql_real_escape_string($_POST['pass']);
    $sql="select name from users where name='".$name."'";
    $result=mysql_query($sql$conn);
    $n=mysql_num_rows($result);
    if (
    $n==0){
    $sql="INSERT INTO".$table_name."SET name='".$name"', pass='".$pass"', mail='".$mail."'";
    $result=mysql_query($sql$conn);
    ...
    }
    else
    {
    echo ...
    }
    зы:: нагромоздил .. почти запутался уже..)
     
    #7 mR_LiNK[deface_0nl, 8 Apr 2007
    Last edited: 9 Apr 2007
  8. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Мда ребята...
    PHP:
    <?php
    if(!get_magic_quotes_gpc()) {
        
    $name mysql_real_escape_string($_POST['name']);
        
    $mail mysql_real_escape_string($_POST['mail']);
        
    $pass mysql_real_escape_string($_POST['pass']);
    } else {
        
    $name $_POST['name'];
        
    $mail $_POST['mail'];
        
    $pass $_POST['pass'];
    }
    $sql "SELECT `name` FROM `users` WHERE `name` = '".$name."'";
    $result mysql_query($sql$conn);
    if(
    mysql_num_rows($result) > 0) {
    $sql "INSERT INTO `".$table_name."` SET `name` = '".$name"', `pass` = '".$pass"', `mail` = '".$mail."'";
    $result mysql_query($sql$conn);
    ...
    } else {
    echo 
    "Такое имя уже есть";
    }
    ?>
     
  9. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    2_Isis
    Как я понял логика такова (если не так поправь):
    PHP:
    !get_magic_quotes_gpc()
    этим проверятся автоматическая расстановка слэшей пХп
    если это не так, то далее производим эту расстановку сами
    PHP:
    $name mysql_real_escape_string($_POST['name']);
    ...
     
    #9 mR_LiNK[deface_0nl, 9 Apr 2007
    Last edited: 9 Apr 2007
  10. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    Нужно строковые значения точками выделять '".S_POST['name']."' и фильтровать лутше сразу учись
     
  11. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    Разобрался уже, спасибо..

    кстати _http://phpfaq.ru/slashes_ неплохая статейка на эту тему!
     
  12. p-range

    p-range Elder - Старейшина

    Joined:
    5 Feb 2006
    Messages:
    137
    Likes Received:
    145
    Reputations:
    118
    уже вторая твоя опечатка...
    правильнее
    =)
     
  13. r0

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

    Joined:
    17 Jul 2005
    Messages:
    450
    Likes Received:
    149
    Reputations:
    147
    Это не выделение, а так сказать конкатенированный переход от строкового значения к значению пременной.
    имхо, заколебаешься так везде проверять... лучше писать под конкретные настройки этой опции , да сама она ужасна как выдумка..
     
  14. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    Знаеш почему я раньше не любил книги с программирования? Там писали заумными словами,которых я не понимал...
     
    1 person likes this.
  15. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    лучше не хоститься на блядских серверах
     
    2 people like this.
  16. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    имхо agava - очень не плох!!)

    В идеале проверка необходима, она позволяет переносимость скриптов, что немаловажно, т.к. честно зае^^вает править при переносе!!
     
    #16 mR_LiNK[deface_0nl, 9 Apr 2007
    Last edited: 9 Apr 2007
  17. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    А в .htaccess настроить параметры под твои скрипты не судьба?

    Пишешь туда
    Code:
    php_value magic_quotes_gpc off
    или
    Code:
    php_flag magic_quotes_gpc 0
    и радуешься нормальной работе твоей системы
     
    #17 Helios, 9 Apr 2007
    Last edited: 9 Apr 2007
  18. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Я от вашего "имхо" подавился.....