Get в мускуль

Discussion in 'PHP' started by Char, 7 Jan 2011.

  1. Char

    Char New Member

    Joined:
    8 Dec 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    0
    Сталкнулся с такой пpоблемой!
    PHP:
    <? 
    $dbhost "localhost"
    $dbuser "test"
     
    $dbpassword "testp"
     
    $dbname "test";
    $rec $_GET['ip'];  
    $idr $_GET['id-data'];  
    $link mysql_connect($dbhost$dbuser$dbpassword);  mysql_select_db($dbname$link);  
    $query "REPLACE INTO `table` (ip,id-data) VALUES($rec,$idr)";   mysql_query($query$link);         
    $query "SELECT * FROM bots";    $result=mysql_query($query);  $number mysql_num_rows($result);
     echo 
    "$number";   
    mysql_close($link);     
     
    ?>
    как видно из кода я получаю GET запpос и добавляю его в базу данных,все ок!НО если я пишу IP то не шлет...пpимеp:
    site.ru/file.php?ip=192.168.10.10&id-data=1 не шлет!
    site.ru/file.php?ip=1921681010&id-data=1 так шлет
    То есть не пускает точки!кто что посоветует???
    Вот код базы
    PHP:
    CREATE TABLE `table` (    `ipTEXT,    `id-datavarchar(255),    PRIMARY KEY  (`ip`)  );
     
    #1 Char, 7 Jan 2011
    Last edited: 7 Jan 2011
  2. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    обрабатывай глобальные переменные mysql_real_escape_string
     
  3. snet

    snet New Member

    Joined:
    19 Dec 2010
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    eslj ya pravilno ponial, to tebe nado ispolzovat funkciu urlencode(). v skobkah, v kachestve argumenta, ukazivat peremennuu so znacheniem ip. a potom, to chto vozvratit eta funkcia, mozhno otpravlat get'om
    chtobi vernut prislannie dannie v normalnii vid - iispolzui funkciu urldecode()

    sory za translit(
     
    #3 snet, 7 Jan 2011
    Last edited: 7 Jan 2011
  4. Char

    Char New Member

    Joined:
    8 Dec 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    0
    оба способа не дали pезультата(((Есть еще идеи?))весь день убил уже)
     
  5. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    и в кавычки заключай значения...
    ... VALUES('$rec','$idr')";
     
    1 person likes this.
  6. snet

    snet New Member

    Joined:
    19 Dec 2010
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    PHP:
    <?
    $ip="192.168.0.1";
    $ip=urlencode($ip);
    echo 
    "<a href=\"dannie.php/?ip=$ip\">otoslat</a>";
    ?>
    send.php:
    PHP:
    <?  
    $dbhost "localhost";  
    $dbuser "test";  
     
    $dbpassword "testp";  
     
    $dbname "test"
    $rec urldecode($_GET['ip']);
    $idr $_GET['id-data'];   
    $link mysql_connect($dbhost$dbuser$dbpassword);  mysql_select_db($dbname$link);   
    $query "REPLACE INTO `table` (ip,id-data) VALUES($rec,$idr)";   mysql_query($query$link);          
    $query "SELECT * FROM bots";    $result=mysql_query($query);  $number mysql_num_rows($result); 
     echo 
    "$number";   

    mysql_close($link);      
     
    ?>
     
  7. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    snet, точки в url погоды не играют,
    у него происходит sql error потому что IP из-за точек воспринимается как число с плавающей точкой, а поле строковое.
    По хорошему нужно было преобразовывать ip в числа и хранить их в поле типа int, но для ТС это слишком сложно.

    Заключение значений в кавычки дает субд понять что ей дают строку, а не число с тремя точками.

    А без mysql_real_escape_string будет sql injection
     
    #7 phpdreamer, 7 Jan 2011
    Last edited: 7 Jan 2011
  8. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    В БД - `ip` - INT
    При вставке
    INSERT INTO `table` (`ip`,`id-data`) VALUES (INET_ATON('127.0.0.1'),'1')
     
  9. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    я обходился пользованием функции ip2long