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

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

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

    whitebios New Member

    Joined:
    6 Jul 2010
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    PHP:
    public function checkforrobot($content,$post,$REFFER)
     {
    if(
    stripos($content,"Запросы с вашего адреса похожи на автоматические, пожалуйста введите цифры, которые вы видите на картинке.")!==FALSE)
    {
    $anticapcha=new anticapcha();

    preg_match_all("/<input type=\"hidden\" name=\"key\" value=\"(.*?)\"/i",$content,$KeyArray,PREG_PATTERN_ORDER);
    preg_match_all("/<input type=\"hidden\" name=\"retpath\" value=\"(.*?)\"/i",$content,$retpathArray,PREG_PATTERN_ORDER);
    preg_match_all("/<img src=\"http:\/\/captcha\.yandex\.net\/image\?key=(.*?)\">/i",$content,$ImageArray,PREG_PATTERN_ORDER);
    $captchaContent=$this->dryconnect("http://captcha.yandex.net/image?key=".$ImageArray[1][0],"",0);
    $content_type=$this->Lastinfo['content_type'];
         
    $extention="jpg";
        
    /* switch($content_type)
         {
         case 'image/jpeg':
         $extention="jpg";
         break;
         }   */
         
    $fp fopen ("./code.$extention""w+");
         
    fwrite ($fp$captchaContent);
         
    fclose ($fp);
         
    $code=$anticapcha->recognize("./code.$extention""871b63251f0537e9081a0101648e8a26"true);
         
    $postA="retpath=".$retpathArray[1][0]."&key=".$KeyArray[1][0]."&rep=$code";
          
    $validationURL="http://captcha.yandex.net/send.xml";
           print(
    "<H1>POSTing to $validationURL</H1><hr><hr><br>");
         
    $aftercaptcha=$this->dryconnect($validationURL,$postA,0);//"http://captcha.yandex.net/send.xml"
         
    $validationURL="http://captcha.yandex.net/&retpath=".$retpathArray[1][0]."&key=".$KeyArray[1][0]."&rep=$code";
         
    $aftercaptcha=$this->dryconnect($validationURL,$postA,0);
        
    // $aftercaptcha=$this->dryconnect($retpathArray[1][0],"",0);
         
    $aftercaptcha=$this->dryconnect($retpathArray[1][0],$post,0);
       
    //  $aftercaptcha=$this->dryconnect($REFFER,"",0);
         
    return $aftercaptcha;
    }

    // print($aftercaptcha);
     
    return false;
    Помогите пожалуйста, все перепроверил а не работает(
     
  2. Fock

    Fock New Member

    Joined:
    20 Jul 2008
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    https://forum.antichat.ru/showpost.php?p=2409478&postcount=16918
    проблему так и не решил
     
  3. miniden

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

    Joined:
    20 Oct 2006
    Messages:
    258
    Likes Received:
    34
    Reputations:
    6
    PHP:
    $date date('t/m/Y - h:i:s'); 
    разделители "/" заменить на "-" и между датой и времинем правильный разделитель
    PHP:
    $date date('t-m-Y h:i:s');
    после
    PHP:
    $insert_query mysql_query ("INSERT INTO guestbook.main (date,name,email,message) VALUES ('$date','".mysql_real_escape_string($name)."','".mysql_real_escape_string($email)."','".mysql_real_escape_string($message)."');") or die (mysql_error());
    добавить:
    PHP:
    header("Location: questboock.php");
     
    #16763 miniden, 3 Nov 2010
    Last edited: 3 Nov 2010
  4. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Рекомендую использовать МЕТА тэг для переадресации вместо header()
    PHP:
    echo "<META HTTP-EQUIV='REFRESH' CONTENT='0; URL= admin.php'>";
     
    1 person likes this.
  5. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Друзья помогите решить задачку.

    Есть массив изображений(кол-во не важно)

    Требуется ср-вами пхп расчертить таблицу согласно кол-ву дней в месяце по 7 ячеек в ряду и заполнять каждую последующую фотографией из массива.

    Как сие чудо можно реализовать?
     
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    svesve называется "скрипт календаря"
     
    _________________________
    1 person likes this.
  7. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    =) да я уже скачал после поста, чего-то по запарке сразу не додумал)))) спс
     
  8. гаррет-тень

    Joined:
    21 Dec 2009
    Messages:
    67
    Likes Received:
    2
    Reputations:
    0
    Есть сайт, и мне надо, чтобы скрипт на странице переходил по ссылке, потом по следующей и еще несколько раз по ней же, между переходами по ссылкам должно пройти 3 секунды, после чего не производил никаких действий в течении 5 минут, а потом снова все повторялось. Подскажите, пожалуйста, функцию, которая устанавливала бы разрыв в действиях скрипта в 3сек, и подскажите как сделать, чтобы скрипт переходил по ссылке.
     
  9. luethus

    luethus New Member

    Joined:
    3 Sep 2010
    Messages:
    27
    Likes Received:
    1
    Reputations:
    0
    гаррет-тень, задержка времени - sleep(3). 3 - секунды. если нужны микросекунды - есть usleep().
    "переход" по ссылке - ээ.. ну просто загрузи страницу с тем url-ом и все. как хочешь. file_get_contents, или fopen, или fsockopen, или curl-ом.. выбор за тобой)
     
    1 person likes this.
  10. -slim-

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

    Joined:
    25 May 2007
    Messages:
    99
    Likes Received:
    12
    Reputations:
    0
    как запретить вход на сайт с IE, Firefox и Chrome?
    нужен реально работающий код
     
  11. M@rkus

    M@rkus Banned

    Joined:
    25 Jul 2010
    Messages:
    43
    Likes Received:
    5
    Reputations:
    0
    ;)
    PHP:
    $user_agent $_SERVER["HTTP_USER_AGENT"]; 
    if (
    eregi("(chrome)"$user_agent)) {
          echo 
    "blocked";
    }
     
    elseif (
    eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})"$user_agent)) {
         echo 
    "blocked";
    }
    elseif (
    eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})"$user_agent))    {
        echo 
    "blocked";
    }
    else 
    header("Location: $url"); 
     
    #16771 M@rkus, 4 Nov 2010
    Last edited: 4 Nov 2010
    1 person likes this.
  12. -slim-

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

    Joined:
    25 May 2007
    Messages:
    99
    Likes Received:
    12
    Reputations:
    0
    thank's )
     
  13. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    ереги устарело, используйте прег_мач
     
  14. h00lyshit!

    h00lyshit! [From Nobody To Root]

    Joined:
    10 Sep 2009
    Messages:
    289
    Likes Received:
    290
    Reputations:
    195
    А почему нельзя просто:
    PHP:
    <?php 

    if ( strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') || strstr($_SERVER['HTTP_USER_AGENT'], 'Mozilla') || strstr($_SERVER['HTTP_USER_AGENT'], 'Chrome'))   

    exit (
    'Доступ закрыт'); 

    else 

    //Контент

    ?>
     
    #16774 h00lyshit!, 5 Nov 2010
    Last edited: 5 Nov 2010
  15. Leonix

    Leonix New Member

    Joined:
    20 Oct 2010
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    PHP:
    <?PHP
    if (isset($_POST['login']) && isset($_POST['password'])) {
        
    $login $_POST['login'];
        
    $password $_POST['password'];

        
    $email$_POST['email'];

        
    $id=cyr(htmlspecialchars(stripslashes(trim($id))));

        
    $query "SELECT `id` FROM `users` WHERE `login`='{$login}' AND `password`='{$password}' LIMIT 1";
        
    $sql mysql_query($query) or die(mysql_error());
        if (
    mysql_num_rows($sql) == 1
        {
            
    $row mysql_fetch_assoc($sql);
            
    $_SESSION['user_id'] = $row['id'];
            while (
    $tablerows mysql_fetch_row($sql))
            {
                echo 
    $email;
            }
        }
        else 
        {
            die(
    'Такой логин с паролем не найдены в базе данных. ');
        }
    }
    и браузер выдает ошибку
    подскажите,пожалуйста :в чем проблема?
     
    #16775 Leonix, 5 Nov 2010
    Last edited by a moderator: 5 Nov 2010
  16. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Leonix по плохому это решается так: пропишите в начале скриптов
    PHP:
    error_reporting(E_ALL & ~E_NOTICE);
    По хорошему: добавьте в условие isset($_POST['email']) И ищите, где определяется переменная $id - при каких то обстоятельствах инициализации не происходит

    Redwood так слишком просто. Но по хорошему еще стоит заменить strstr на stripos. И к тому же проверка strstr($_SERVER['HTTP_USER_AGENT'], 'Mozilla') - выпилит с сайта поисковых ботов, что обычно нежелательно
     
    _________________________
  17. Leonix

    Leonix New Member

    Joined:
    20 Oct 2010
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    помогло,но немного
    а раньше было нормально!
     
  18. h00lyshit!

    h00lyshit! [From Nobody To Root]

    Joined:
    10 Sep 2009
    Messages:
    289
    Likes Received:
    290
    Reputations:
    195
    Ну регистр тут роли не играет, так как он явно прописан в скрипте, по другому быть не может. А по поваду Mozill' ы и поисковых ботов, вроде бы задача и была блокировать все обращения с этих User Agent' ов, по крайней мере никаких других условий в ТЗ не давалось )
     
    #16778 h00lyshit!, 5 Nov 2010
    Last edited: 5 Nov 2010
    1 person likes this.
  19. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Redwood суть в strpos против strstr и том, что мануал советует использовать первую функцию вместо второй для поиска подстрок.

    Если уж быть педантом - по заданию требовалось запретить доступ трем браузерам, а не накрыть шквальным огнем все подряд.

    Leonix значит вы что-то изменили. Советую сделать вывод sql-запроса (echo $query;) и ручками отправить его самостоятельно. Возможно, таких пар логин/пароль действительно нет или передаются не те данные, которые хотелось.

    Далее, строка $id=cyr(htmlspecialchars(stripslashes(trim($id)))); - не несет смысловой нагрузки, так как не используется в данном коде

    А также, советую прочитать вот это: https://forum.antichat.ru/thread30641.html
     
    _________________________
  20. alex_zp

    alex_zp New Member

    Joined:
    5 Nov 2010
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Добрый день.
    Пытаюсь POST запросом через КУРЛ отправить запрос, чтобы создать топик на форуме, перед отправкой авторизовался, куки сохранил, захожу на форму создания топика, считал скрытые поля, сформировал массив из нужных данные для отправки, указываю верные заголовки, применяю куки, отправляю данные , получаю ответ "200", как бы всё отлично, но топик не создаётся.
    Вот код
    PHP:
    $header1 [] = "Host:www.woolfs.ru";    
            
    $header1 [] = "Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7";    
            
    $header1 [] = "Connection:keep-alive";    
            
    $header1 [] = "Accept-Encoding:gzip,deflate";
            
    $header1 [] = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";    
            
    $header1 [] = "Accept-Language:ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3";
            
    $header1 [] = "Keep-Alive:115";    
            
    $header1 [] = "Connection:keep-alive";    
            
    $header1 [] = "Content-Type:multipart/form-data";            
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL,$url_posting);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_HTTPHEADER $header1 );
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION0);
            
    curl_setopt($chCURLOPT_REFERER,'http://www.woolfs.ru/forum/posting.php?mode=post&f=4');        
            
    curl_setopt($chCURLOPT_POSTFIELDS,$posting_data);
            
    curl_setopt($chCURLOPT_USERAGENT$this->user_agent);
            
    curl_setopt($ch,  CURLOPT_COOKIEFILE$this->cookies_path);
            
    curl_setopt($chCURLOPT_COOKIEJAR$this->cookies_path);
            
    $result=curl_exec($ch);            
            
    curl_close($ch);
    Уже 3 дня бьюсь на этим, ПОМОГИТЕ кто может.
     
Thread Status:
Not open for further replies.