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

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

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

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Например так:
    Code:
    $str = preg_replace('/([A-Z])/e', 'ord(\1) - 55', $str);
    
     
    _________________________
    1 person likes this.
  2. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    Вот решил после взлома своего сайта защитить сайт от повторного взлома защитой входа в админский аккаунт кодовым словом. Но не знаю как осуществить и куда в какой файл это писать. Не разбираюсь в php. Не подскажете как делать при входе в админский аккаунт перепроверку на кодовое слово, которое знаю только я? Или сделать так, чтобы эта проверка происходила каждые 5 минут?
    И как сделать, чтобы после входа в свой аккаунт сессия автоматически разрывалась после каждых 5 минут?

    Заранее спс. Нужно очень.
     
  3. N@b$ter

    N@b$ter Elder - Старейшина

    Joined:
    6 Oct 2009
    Messages:
    293
    Likes Received:
    73
    Reputations:
    21
    А теперь по подробнее движок какой? И как понять кодовое слово? Всмысле админка не защищена паролем?
     
  4. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    DLE. Просто, чтобы возникало окошко для ввода секретного слова после входа в сессию админа. Админка защищена конечно проверкой по IP.
    Но мне надо, чтобы при входе не в админку, а после входа в админский аккаунт выходил запрос типа "введите пароль который знает только адмистратор, иначе сессия админа будет закрыта". Чтобы если правильно админская сессия продолжалась, если нет была закрыта.
     
  5. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    Тут дело в том, что мой сайт ломают через недостаточную фильтрацию в облаке тегов либо в другом модуле и пользуются кратковременно правами администратора и пакостят на сайте.
     
  6. N@b$ter

    N@b$ter Elder - Старейшина

    Joined:
    6 Oct 2009
    Messages:
    293
    Likes Received:
    73
    Reputations:
    21
    Ну и смысл? просто поставь пароль на админ аккаунт посложнее, а так взломщик сможет зайти если хранить кодовое слово в мускуль так как я понимаю он зашёл через скуль-инъекцию обнови двиг на сайте до последней версии и не будет тебе беды)
    Ну, а если так жаждешь, то примерно такое надо сделать:
    PHP:
      if(isset($_COOKIE['admin'])){        
    Echo 
    "<form method=\"post\"><br>
    <input type=\"password\" name = \"secret\" /><br>
    <input type=\"submit\" name=\"create\" value=\"Отправить\"> "
    ;
        }
    Затем отправляешь данные на проверку через sql или если используешь пасс в файле то там его проверяешь, под рукой нет движка дле, а также я новечёк в пхп сильно не пинай)
     
    #19286 N@b$ter, 2 Oct 2011
    Last edited: 2 Oct 2011
  7. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Подскажите, как посредством curl получить изображение каптчи с адреса http://www.bonus.mts.ru/ru/mts_bonus/captcha/smcaptcha.jpg
    При обращении всегда возвращается пустой результат.
     
  8. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    Обязательно curl`ом ? Если так <img src="http://www.bonus.mts.ru/ru/mts_bonus/captcha/smcaptcha.jpg" />
     
  9. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    так же как и любую страницу
    http://phpclub.ru/detail/article/curl
     
  10. AnGeI

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

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    Я так понял, что тебе нужно капчу вывести где-то на стороне, чтобы потом курлом отправить разгаданный код.
    Нужно по ссылке достать source изображения, потом base65_encode(); его, дальше выводишь на стороне и не будет прямого обращения с твоего ip на картинку на сервере mts.
    PS: без base64 скорее всего можно обойтись.
     
  11. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    всем привет,есть класc phpmailer как через него отправить сгенированый пароль на мыло?

    PHP:
    <?php 

    //   generator password
                
    $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP"
                
    $max=10
                
    $size=StrLen($chars)-1
                
    $pwd=null
                while(
    $max--) 
                
    $pwd.=$chars[rand(0,$size)]; 
                 
    $pwd $sendtopwd;

    /**
    * Simple example script using PHPMailer with exceptions enabled
    * @package phpmailer
    * @version $Id$
    */

    require '../class.phpmailer.php';

    try {
        
    $mail = new PHPMailer(true); //New instance, with exceptions enabled
                                // <<<<<<<<<here>>>>>>>>
        
    $body             "ВАШ ПАРОЛЬ $sendtopwd";
        
    $body             preg_replace('/\\\\/',''$body); //Strip backslashes

        
    $mail->IsSMTP();                           // tell the class to use SMTP
        
    $mail->SMTPAuth   true;                  // enable SMTP authentication
        
    $mail->Port       25;                    // set the SMTP server port
        
    $mail->Host       "mail.yourdomain.com"// SMTP server
        
    $mail->Username   "[email protected]";     // SMTP server username
        
    $mail->Password   "password";            // SMTP server password


        
    $mail->AddReplyTo("[email protected]","First Last");

        
    $mail->From       "[email protected]";
        
    $mail->FromName   "First Last";

        
    $to "[email protected]";

        
    $mail->AddAddress($to);

        
    $mail->Subject  "First PHPMailer Message";

        
    $mail->AltBody    "To view the message, please use an HTML compatible email viewer!"// optional, comment out and test
        
    $mail->WordWrap   80// set word wrap

        
    $mail->MsgHTML($body);

        
    $mail->IsHTML(true); // send as HTML

        
    $mail->Send();
        echo 
    'Message has been sent.';
    } catch (
    phpmailerException $e) {
        echo 
    $e->errorMessage();
    }

    ?>
    сама отправка происходит нормально но возвращает текст $sendtopwd :rolleyes:
     
  12. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    Nelz.
    =>>
    не?!
     
    1 person likes this.
  13. 1wegas1

    1wegas1 New Member

    Joined:
    4 Apr 2011
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Для чего перед isset ставится восклицательный знак ?
     
  14. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Восклицательный знак - это отрицание. Если isset(...) вернет true, то !isset(...) - false, и наоборот.
     
  15. 1wegas1

    1wegas1 New Member

    Joined:
    4 Apr 2011
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Я вот не могу разобратся кое с чем вот у меня есть скрипт

    PHP:
    <?php
    require_once 'config.php';

        if (isset(
    $_POST['submit'])){
            
                
    $author  =  $_POST['author'];
                
    $news    =  $_POST['news'];  
                
                if(isset(
    $author)){
                    
                    echo 
    'Вы не ввели Имя';
                    
                }else{

            
    $link mysql_connect("$server","$user","$password") or die (mysql_error());
            
    $mysql_select_db mysql_select_db ("$dbname") or die (mysql_error());
            
    $sql "INSERT INTO news SET author='$author',news='$news'";
            
    $result mysql_query($sql) or die (mysql_error());
                }    
           
         
            }
    ?>
    Если кнопка sumbit была нажата то выполняем проверку введено ли что нибудь в поле author .
    если в поле $author ничего не введено то echo 'Вы не ввели Имя'; а если же введено то else и дальнейший скрипт .


    Но блин если я не чего не ввожу он мне выводит сообщение ,а скрипт всеровно выполняется ,как быть ,я что то вообще запутался .
     
  16. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Замени
    PHP:
    $author  =  $_POST['author'];
    на
    PHP:
    if (isset($_POST['author'])) $author  =  $_POST['author'];
    И дальше это условие:
    PHP:
    if(isset($author))
    замени на следующее:
    PHP:
    if (!isset($author)) || (empty($author)))
     
    #19296 Chrome~, 3 Oct 2011
    Last edited: 3 Oct 2011
  17. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    Советую изучить основы PHP. ! ставиться не только перед isset, это такой оператор отрицания.
     
    1 person likes this.
  18. 1wegas1

    1wegas1 New Member

    Joined:
    4 Apr 2011
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Работает ,объяснит плз в чём моя ошибка !
     
  19. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    1. есть пароль восстановления на сайте,как сделать чтоб на мыло пришел линк и при переходе сменилья пасс,смысле как реализовать?

    2. есть wysiwig редактор nicedit,как сохранить из тексариа на бд и как оттуда вытащить с бб?

    _nicedit.com/index.php
     
  20. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Да именно это я и хочу сделать. Но при попытке достать source изображения, curl всегда возвращается пустой результат. Возможно из за того, что сервер мтс перед отправкой кода изображения, вначале отправляет http заголовок "HTTP/1.1 404 Not Found"

    Вот сам код:
    PHP:
    <?php
    class mts {

        function 
    curl($url$cookie false$post false$header false$follow_location false)
        {
            
    $ch curl_init($url);
            
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5");
            
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
            
    curl_setopt($chCURLOPT_FAILONERRORtrue);
            
    curl_setopt($chCURLOPT_HEADER$header);
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION$follow_location);
            if (
    $cookie) {
                
    curl_setopt($chCURLOPT_COOKIE$cookie);
            }
            if (
    $post) {
                
    curl_setopt($chCURLOPT_POST1);
                
    curl_setopt($chCURLOPT_POSTFIELDS$post);
            }
            
    $response curl_exec($ch);
            
    curl_close($ch);
            return 
    $response;
        }

        function 
    __construct() {
            
    $result $this->curl('http://www.bonus.mts.ru/ru/mts_bonus/captcha/smcaptcha.jpg'falsefalsetrue);
            
    print_r($result);
        }
    }

     
    $mts = new mts(); 
    ?> 
     
    1 person likes this.
Thread Status:
Not open for further replies.