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

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

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

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    никак.... создай базовый класс и в нём всё храни... либо класс контейнер
     
  2. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    что подразумется под класс-контейнер?
    тупо все перменные залить туда?
     
  3. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    тада

    ну не все.....а к которым кросс доступ нужен
     
  4. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    не это как-то не по-гиковски...я предлагаю как вариант...пропарсить инклудный файл, конструктором автостарта регуярками....сейачс напишу....посмотрим что получится=)
     
  5. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Это индусский код - передавать глоабльные переменные через подключаемый файл...... для каждого нового класса
     
  6. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    1- не для каждого нового класса, а для экзампляров.
    2- сейча напишу посмотрим что получится.
    просто использовать класс в качестве контейнера, это совершенно дико...не считая что это только частичное копирование данных...копипастом можно заниматься и так...ручками все коды собирать и нахер убрать php
     
    #11486 RedBull@12, 1 Sep 2009
    Last edited: 1 Sep 2009
  7. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    ЭВРИКА!

    Ура!
    2FireFenix,элементарно все оказалось!
    PHP:
    <?php
    class base {    
     public 
    $vars;   
     function 
    __construct() {      
      require_once(
    "vars.php");      
      
    $this->vars $__VARS;      
      
    print_r($this->vars);    
     }  
    }  
    $base = new base;
    ?>
     
    #11487 RedBull@12, 1 Sep 2009
    Last edited: 1 Sep 2009
    1 person likes this.
  8. zavra

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

    Joined:
    12 Mar 2008
    Messages:
    87
    Likes Received:
    48
    Reputations:
    23
    PHP:
    <?

    $method="POST";
    $addr="/login.php"//адрес относительно корня сервера, 
    $target="127.0.0.1"//ip адрес сервера, или прокси сервера, через который оправить запрос
    $targetport=80//порт сервера или прокси

    $postvars="op=a_login_attempt&[email protected]&pass=zzzzzz&expire=0";
    $len=strlen($postvars);

    $in=
    "$method $addr HTTP/1.1\r\n".
    "Host: vkontakte.ru\r\n".
    "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2\r\n".
    "Accept: */*\r\n".
    "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n".
    "Accept-Encoding: gzip,deflate\r\n".
    "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n".
    "Keep-Alive: 300\r\n".
    "Connection: keep-alive\r\n".
    "Content-Length: $len\r\n\r\n".
    $postvars;

    echo 
    $in;

    $socket socket_create (AF_INETSOCK_STREAM0);
    $result socket_connect ($socket$target$targetport);
    socket_write($socket$instrlen($in));
    $o="";
    while (
    $out socket_read ($socket2048)) {
       
    $o.=$out;
    }
    echo 
    $o;
    ?>
    Однако при тесте показывает 404 страница хостера вместо ответа от сервера =( можно как-то проще сделать, а не через сокет?
     
    #11488 zavra, 2 Sep 2009
    Last edited: 2 Sep 2009
  9. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    так у вас адрес локальный, а хост в запросе порписан vkontakte.ru...
    можно через cURL
    PHP:
    $c curl_init();      
    curl_setopt($cCURLOPT_URL"http://vkontakte.ru/");    
    curl_setopt($cCURLOPT_REFERER"http://vkontakte.ru/");      
    curl_setopt($cCURLOPT_USERAGENT"9.60 beta под Windows XP — Opera/9.60 (Windows NT 5.1; U; en) Presto/2.1.1");      
    curl_setopt($cCURLOPT_HEADER1);      
    curl_setopt($cCURLOPT_RETURNTRANSFER1);      
    $body curl_exec($c);
    curl_close($c);
    //это обычный гет
    PHP:
    $c curl_init();  
    curl_setopt($cCURLOPT_URL"http://vkontakte.ru");
    curl_setopt($cCURLOPT_REFERER"http://vkontakte.ru");
    curl_setopt($cCURLOPT_USERAGENT"9.60 beta под Windows XP — Opera/9.60 (Windows NT 5.1; U; en) Presto/2.1.1");
    curl_setopt($cCURLOPT_HEADER1);
    curl_setopt($cCURLOPT_POST1);
    curl_setopt($cCURLOPT_POSTFIELDS$post);
    curl_setopt($cCURLOPT_RETURNTRANSFER1);
    curl_setopt($cCURLOPT_COOKIE$cookies);
    $body curl_exec($c);
    curl_close($c);
    //это пост
    http://www.php.su/functions/?cat=curl здесь подробно описао какие ключи что значат. икак пользоваться...
    PHP:
    preg_match_all('|Set-Cookie: (.*);|U'$body$results);
    $cookies implode(';'$results[1]);
    регулярка для выдерания куков из пришедших хедеров
     
    #11489 RedBull@12, 2 Sep 2009
    Last edited: 2 Sep 2009
    1 person likes this.
  10. zavra

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

    Joined:
    12 Mar 2008
    Messages:
    87
    Likes Received:
    48
    Reputations:
    23
    прописал в хост http://vkontakte.ru, выдает 400 Bad Request
    через curl для меня еще сложнее( но такой вариант тоже попробую, спс. с сокетами хочется до конца разобраться
     
  11. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    тут написал функцию аунтификации и идентификации....подскажите возможно ли обойти данную аунтификацию.
    cоотвественно если да, то каким макаром.
    PHP:
      public function security($string,$i) {
        if (
    $i == 0) { ...  }
        elseif (
    $i == 1) { ... }
        elseif (
    $i == 2) { ... }
        elseif (
    $i == 3) {
          
    $string mysql_real_escape_string($string);
        }
        return 
    $string;
      }
    }

    public function 
    login($login,$pass) {
        
    $this->connect();
        
    $login strtolower($this->security($login,3));
        
    $login base64_encode($login);
        
    $pass base64_encode($this->security($pass,3));
        
    $result $this->query("SELECT * FROM `users` WHERE `login`='".$login."' AND `pass`='".$pass."'");
        if (
    $result && mysql_num_rows($result) > 0) {
          
    $ses session_id();
          if (
    preg_match("|([a-zA-Z0-9])+|i",$ses) && preg_match("|([0-9\.])+|i",$_SERVER["REMOTE_ADDR"])) {
            
    $agent $this->security($_SERVER['HTTP_USER_AGENT'],3);
            
    $referer $this->security($_SERVER['HTTP_REFERER'],3);
            
    $forwarded $this->security(getenv(HTTP_X_FORWARDED_FOR),3);
            
    $ip $_SERVER["REMOTE_ADDR"];
            
    $time time() + (60*60*6);
            
    $result $this->query("INSET INTO `login`(`hash`,`date_begin`,`date_end`,`login`,`ip`,`agent`,`referer`,`forwarded`) VALUES('".$ses."','".time()."','".$time."','".base64_decode($login)."','".$ip."','".$agent."','".$referer."','".$forwarded."')");
          }
        }
        else {  }
        
    $this->close();
      }
      public function 
    ident() {
        
    $this->connect();
        
    $ses session_id();
        if (
    preg_match("|([a-zA-Z0-9])+|i",$ses) && preg_match("|([0-9\.])+|i",$_SERVER["REMOTE_ADDR"])) {
          
    $result $this->query("SELECT * FROM `login` WHERE `hash`='".$ses."' AND `ip`='".$_SERVER["REMOTE_ADDR"]."'");
          if (
    $result && mysql_num_rows($result) > 0) {
            
    $row mysql_fetch_array($resultMYSQL_ASSOC);
            if (
    $row['date_begin'] <= time() && $row['date_end'] >= time()) {
              return 
    1;
            }
            else { return 
    0; }
          }
          else { return 
    0; }
        }
        else { return 
    0; }
        
    $this->close();
      }
     
  12. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    честно говоря с сокетами плохо знаком, но вот cURL довольно хорошо знаю. примеры кода который скинул..это с рабочего движка.
     
  13. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    =/...а чем не нравится mysql_real_escape_string через которую все пропускается...специально привел секьюрный метод...
     
  14. Myload

    Myload Banned

    Joined:
    15 Mar 2009
    Messages:
    0
    Likes Received:
    96
    Reputations:
    6

    как на сайт поставить это
    и кнопку сделать в админке?
     
  15. j0ker13

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

    Joined:
    28 Jul 2008
    Messages:
    199
    Likes Received:
    16
    Reputations:
    5
    суть вопроса)
    выполняется скрипт. вывод на страницу через echo. после этого надо перенаправить на другую страницу.
    Header("Location:") не катит. надо сделать тока средствами пхп. т.е. js тож не катит)
     
  16. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    j0ker13 В разделе HEAD документа прописать
    Code:
    <meta http-equiv="refresh" content="задержка в секундах до редиректа; url=адрес для редиректа">
     
    _________________________
  17. j0ker13

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

    Joined:
    28 Jul 2008
    Messages:
    199
    Likes Received:
    16
    Reputations:
    5
    это не запланировано должно быть) т.е. если случилось событие то вывод текста и редирект. если не случилось продолжается выполнятся)
     
  18. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    тогда не понятно, почему

    if (условие) Header("Location:");

    в чем вопрос - непонятно вообще
     
  19. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    Какбы хеадер - это не средство пхп?
    ну тогда как сказано выше -
    PHP:
    echo '<meta http-equiv="refresh" content="задержка в секундах до редиректа; url=адрес для редиректа">';
     
  20. anm767

    anm767 New Member

    Joined:
    1 Sep 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    как создать HTTP GET запрос ? пример:

    GET /path/file.html HTTP/1.0

    как это работает?

    на форуме тут видел:

    "Сформируем вот такой вот запрос
    POST http://.... HTTP/1.0
    или
    OPTIONS / HTTP/1.0"

    сформулировать понятно, а как его отправить?
     
Thread Status:
Not open for further replies.