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

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

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

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    Никогда не понимал такой особенности PHP =(
    Точнее не могу понять почему ее так трудно пофиксить. Вечные проблемы с ней.
     
  2. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    не не это не вариант он мне нужен... актуально
     
  3. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    PHP:
     if ($_SESSION['username']) 


    if(
    $_GET['action']== 'logout') { 
    session_destroy(); 
    header('Location: http://ya.ru'); 
    die(); 


    echo 
    "Welcome, ".$_SESSION['username']."!<br><a href='member.php?action=logout'> Logout </a>"

    }
     
    3 people like this.
  4. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    всем спасибо
     
  5. lex(SL)

    lex(SL) New Member

    Joined:
    21 Nov 2010
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    Не знаю, я всегда кукисы использую даже при организации серьезных движков, а о последствиях думать стоит конечно, но пароль же как он есть в куку никто не сует а использует конструкцию типа:

    if($_COOKIES['pass']==md5('пароль из базы данных'))

    А лучше строку с паролем+IP полный или подсеть сунуть в md5 и пусть пиздят куки сколько хотят.

    на сколько я знаю md5 можно только сбрутить. А через чур быть параноиком тоже не хорошо, в конце концов если у юзера акк увели это его халатность и его проблемы, а так можно не только куки спиздить, можно еще троя заслать к примеру клавиатурного, давайте тоже будем думать о таком варианте и попытаемся это предусмотреть?
     
    #18345 lex(SL), 30 Apr 2011
    Last edited: 30 Apr 2011
  6. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    а покажите примеры ваших серьезных движков? :)
     
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    OnlyOn никакой проблемы нет, разработчики пхп верно считают, что данные нужно начинать посылать, как только они становятся готовы. Если же этого не хочется и пользоваться MVC религия не позволяет - придумана буферизация http://php.net/ob_start

    lex(SL) не один десяток "серьезных движков" уже обжегся на том, что получал много информации от пользователя через куки. Причина? Куки можно подделать, а данные в сессию - попробуй еще запиши

    Если опенсорс движки пишете - в личку примеры, если не сложно
     
    _________________________
  8. AnGeI

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

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    Подскажите, что значит первая цифра в записи chmod для файлов или папок.
    Нагуглил таблицу соответствий:
    Может у кого-то найдутся примеры в каких случаях их стоит использовать?
     
  9. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    777 - это полные права, что дают файлам полную "свободу"
    755 - чаще всего используется для папок и скриптов
    666 - обрезанные права.

    Кароче ставь 755 и будет тебе счастье.
     
  10. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    7 - комбинация битов rwx (чтение+запись+выполнение, 4+2+1=7)
    6 - комбинация битов rw (чтение+запись, 4+2=6)
    5 - комбинация битов rx (чтение+выполнение, 4+1=5)
    4 - бит чтения (4)
    и т.д.
    Для пхп-скриптов достаточно прав 0644
     
  11. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Люди, подскажите, как на php проверить наличие поддомена http://forum.site.ru у сайта?
     
  12. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Самый простой вариант - file_get_contents:
    PHP:
    file_get_contents('http://forum.site.ru/')
    Если страницу получить удалось - домен существует, если нет - домена нет.
    Текущий домен храниться в переменной:
    PHP:
    $_SERVER["SERVER_NAME"]
    Реализовать можно так:
    PHP:
    <?php
     $dp 
    'forum';//Домен который нужно узнать
    //--------------
    $darray explode("."$_SERVER["SERVER_NAME"]);
    if (
    file_get_contents('http://'.$dp.'.'.$darray[count($darray)-2].'.'.$darray[count($darray)-1].'/') == true)
         echo 
    'Домен существует';
              else
         echo 
    'Домена нет';  
    ?>
    Преимущество данного кода - не надо вносить нужный домен, код сам его определяет.

    Так же возможно реализовать этот же вариант через cURL:
    PHP:
    <?php
     $dp 
    'forum';//Домен который нужно узнать
    //--------------
    $darray explode("."$_SERVER["SERVER_NAME"]);

     
    $curl curl_init('http://'.$dp.'.'.$darray[count($darray)-2].'.'.$darray[count($darray)-1].'/');
     
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
     
    $result curl_exec($curl);
     
    curl_close($curl); 

    if (
    $result==true)
         echo 
    'Домен существует';
              else
         echo 
    'Домена нет';  
    ?>
    Или же можно обратиться напрямую к DNS, что правдо сложно. Так же привиду скрипт сокращения доменов до третего уровня:
    PHP:
    <?php

    $strings 
    = array(
       
    'http://www.test.domain.com.ua',
       
    'www.test.domain.com.ua',
       
    'test.domain.com.ua',
       
    'super.domain.ru.com',
       
    'domain.ru',
    );
    $pattern '#^(?:http://)?(?:www\.)?[^.]+\.(.+)#';

    foreach (
    $strings as $s) {
     
    assert(preg_match($pattern$s$matches) == 1);
     echo 
    "$s => $matches[1]\n";
    }

    ?>
    Что б проверить, существует ли адрес пригодиться такая функция:
    PHP:
    FUNCTION url_exists($strURL) {
        
    $resURL curl_init();
        
    curl_setopt($resURLCURLOPT_URL$strURL);
        
    curl_setopt($resURLCURLOPT_BINARYTRANSFER1);
        
    curl_setopt($resURLCURLOPT_HEADERFUNCTION'curlHeaderCallback');
        
    curl_setopt($resURLCURLOPT_FAILONERROR1);
     
        
    curl_exec ($resURL);
     
        
    $intReturnCode curl_getinfo($resURLCURLINFO_HTTP_CODE);
        
    curl_close ($resURL);
     
    //Добавить коды ошибок, которые вам нужны.
        
    IF ($intReturnCode != 200 && $intReturnCode != 302 && $intReturnCode != 304) {
           RETURN 
    FALSE;
        } ELSE {
            RETURN 
    TRUE;
        }
    }
    А проверить существование E-Mail гораздо проще(Если когда ни будь понадобиться):
    PHP:
    function VerifyEmailAddress($email) {
        list(
    $user$domain) = explode("@"$email);
        
    $result checkdnsrr($domain'MX');
        return(
    $result);
    }
    Что то я отклонился от темы, ещё узнать существует ли домен можно даже неотправляя никаких пакетов:
    PHP:
     $dp 'forum';//Домен который нужно узнать
    //--------------
    $darray explode("."$_SERVER["SERVER_NAME"]);

    $handle = @fopen('http://'.$dp.'.'.$darray[count($darray)-2].'.'.$darray[count($darray)-1].'/'"r");
    if(
    strpos($handle"Resource id") !== false)
         echo 
    "Домен существует";
             else
         echo 
    "Домен не существует";

    Так же советую почитать о функции gethostbyname, которая узнаёт IP по домену, что может помочь. Надеюсь достаточно хорошо ответил на ваш вопрос.
     
    #18352 randman, 1 May 2011
    Last edited: 1 May 2011
    3 people like this.
  13. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    Вариант наверно жидкий, но вот так

    PHP:
    <?php 
     $site 
    'mazhor.com';
     
    $a file_get_contents("http://forum.".$site); 
    echo (
    $a == true
    'Есть поддомен' 'Нет поддомена' ?>
    Если поддомен есть, то выведет "Поддомен есть", иначе если поддомена нету, скрипт работает столько времени, сколько ему отведено и выводит ошибку. Это свидетельствует о том, что нету поддомена, пот только не пойду почему когда
    PHP:
    ($a == true)
    Возвращает false, "поддомена нет" не выводится.

    2 Вариант, curl

    PHP:
    $site 'http://forum.mazhor.com';
     
    $curl curl_init($site);
     
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
     
    $result curl_exec($curl);
     
    curl_close($curl);
    echo 
    $result 'Поддомен есть' 'Поддомена нет' ;
    У меня работает корректно
     
    #18353 Edward, 1 May 2011
    Last edited: 1 May 2011
    1 person likes this.
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    krypt3r, OnlyOn, нет, мне все таки не кажется. В этом топике в последнее время вошло в привычку отвечать на все что угодно, кроме заданного вопроса. Человек спрашивает про биты установки SUID SGID, вы же ему рассказываете про доступ на чтение/запись/выполнение.

    AnGeI на википедии прекрасно все описано: http://ru.wikipedia.org/wiki/Chmod
    mff что для вас означает наличие? Если вы хотите проверить доступен ли по этому адресу веб-сервер - то соединитесь с ним и отправьте HTTP запрос. Если же хотите проверить, соответствует ли такому поддомену какой-то IP адрес, то можно так:
    PHP:
    $subdomain 'trtatatat.qip.ru';
    if (
    $subdomain===gethostbyname($subdomain)) {echo 'No such subdomain';}
    else {echo 
    'Subdomain exists';}

    echo 
    "<br/>\r\n";

    $subdomain 'forum.qip.ru';
    if (
    $subdomain===gethostbyname($subdomain)) {echo 'No such subdomain';}
    else {echo 
    'Subdomain exists';}
     
    _________________________
    2 people like this.
  15. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    Еще добавить 404.
    Но тут уже смотря что хочет он. Мне кажется проверить стоит ли у пачки доменов по этому адресу форум.


    +5 пример выше :

    А проверить существование E-Mail гораздо прощще:

    не помню чтобы он спрашивал про емаил =) Если уд блистать знаниями стандартных функций, то конкретно отвечая на вопросы =)
     
    #18355 -=Zhenek=-, 1 May 2011
    Last edited: 1 May 2011
  16. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Gifts спасибо. Я буду загружать список URL адресов и мне нужно будет узнать, есть ли на сайтах форум на поддомене или нету. Пробовать буду поддомены:
    forum.
    talk.

    затем, если нет форума на этих поддоменах, проверяю есть ли папки
    /forum/
    /talk/

    если и папок нету, то проверяю файлы в корне:
    /forum.php
    /forum.html
    /forum.htm
    /forum.asp
    /talk.php
    /talk.html
    /talk.htm
    /talk.asp

    Вот в идеале какой хочу скрипт написать :rolleyes:
     
    #18356 mff, 1 May 2011
    Last edited: 1 May 2011
  17. Afarcheg

    Afarcheg New Member

    Joined:
    20 Jul 2010
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    Народ подскажыте...

    Народ поделитесь пожалусто скриптом на заливку на фтп сервер с помошю курл. Или обясните как файл с компа сделать в такую переименную $_FILES['upload']['name'] без пост запроса...
     
  18. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    http://forum.vingrad.ru/forum/topic-155354.html#entry1158805
     
  19. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    Есть время С 12:00 по 13:30

    И время 13:00 по 15:10

    Нужно как-то определить не получается ли накладка времени..
    В данном случае получается. т.к 13:00 попадает во временной промежуток 12:00 13:30

    Нужно просерить не попадает ли второй промежуток в первый.

    единственное что приходит в голову это поделить время на часы и минуты и кучей ифов сравнивать,но конструкция получится громоздкая и не все предусматривающая(
     
    #18359 -=Zhenek=-, 2 May 2011
    Last edited: 2 May 2011
  20. Andres

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

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    Это пиздец просто
    Писать для начала научись
    Ничего личного
     
Thread Status:
Not open for further replies.