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

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

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

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

    Joined:
    27 Feb 2011
    Messages:
    736
    Likes Received:
    73
    Reputations:
    19
    Безопасен ли такой код?


    PHP:
      $pages = array(); //Массив с именами допустимых стр.
            //$_GET['page'] имя  нужной стр.
     
    if (!isset($_GET['page'])) {
        
    header('Location: index.php?page=auth');
        exit();
      }
      
      
                                       
    //Проверяем передано ли нормальное имя стр.
      
    if (!in_array($_GET['page'], $pages)) {
         
    header('Location: index.php?page=auth');
         exit();
      }
                 
      
       if (!
    $page file_get_contents('pages/'.$_GET['page'].'.html')) {
           die(
    'Внутренняя ошибка обновитке пожалуйста стр.'); 
       }
     
  2. Metal-Core

    Metal-Core Member

    Joined:
    20 Sep 2011
    Messages:
    149
    Likes Received:
    14
    Reputations:
    0
    Как через curl сделать 2 запрос после авторизации? напр получить через GET содержимое "Настройки" ? пробывал делать так:

    PHP:
    $evo curl_init();{
            
    $data "login=11&Domain=mail.ru&password=22";
          
            
    $url = array('http://auth.mail.ru/cgi-bin/auth','http://e.mail.ru/cgi-bin/folders?985945808');
            
    $i 0;
            
    curl_setopt($evoCURLOPT_COOKIESESSION,true);
            
    curl_setopt($evoCURLOPT_HEADER,1);
            
    curl_setopt($evoCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($evoCURLOPT_URL,$url[$i]);
            
    curl_setopt($evoCURLOPT_POST,true);
            
    curl_setopt($evoCURLOPT_COOKIEJAR'cookie.txt'); 
            
    curl_setopt($evoCURLOPT_COOKIEFILE'cookie.txt'); 
            
    curl_setopt($evoCURLOPT_POSTFIELDS,$data);
            
    curl_setopt($evoCURLOPT_FOLLOWLOCATIONtrue);
            
    curl_setopt($evoCURLOPT_USERAGENT,'Opera/11.0 (compatible; MSIE 5.01; Windows NT 5.0)');
            
            
    $post[0] = curl_exec($evo); 
            
    $i++;
            
    $post[0] = curl_exec($evo); echo $post[0];
     
  3. AnGeI

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

    Joined:
    8 Dec 2008
    Messages:
    396
    Likes Received:
    79
    Reputations:
    16
    PHP:
    function a(boolean $b)
    {
    var_dump($b);
    }

    $b true;
    a($b);
    Ошибка: Catchable fatal error: Argument 1 passed to a() must be an instance of boolean, boolean given, on line 8 and defined on line 4

    Почему ошибка? Даже в тексте ошибки написано: должно быть boolean, дается boolean.

    Metal-Core, URL нигде не прописан в curl функциях.
     
  4. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    736
    Likes Received:
    73
    Reputations:
    19
    PHP:
     function a($b

    var_dump($b); 


    $b true
    a($b);  
    (boolean)$b = true;
    Мб так?
    Мб. к типу не приводит автоматом.
     
    #20744 mironich, 21 Jun 2012
    Last edited: 21 Jun 2012
    1 person likes this.
  5. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    945
    Likes Received:
    307
    Reputations:
    51
    AnGeI php не является строго типизированным языком программирования, поэтому тип данных объявлять не нужно.
     
  6. BRR

    BRR New Member

    Joined:
    4 Jun 2012
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Всем привет) есть такой код.

    PHP:
    Class mysql {
    private 
    $dbconnect;
    private 
    $dbselect

     
    function __construct() {
         
    $this->dbconnect mysql_connect("localhost","root","");
        
    $this->dbselect mysql_select_db("site",$this->dbconnect);
         }

        function 
    fetch($table_name) {    
               return 
    mysql_query("SELECT id ,fullname FROM ".$table_name,$this->dbconnect) or die(mysql_error());
            
        }
    }
    на другом файле делаю так.

    PHP:
    require ("class.mysql.php");

    $db = new mysql;

        
    $u $db->fetch("users");
        
         while (
    $row mysql_fetch_array($u)) {
             echo 
    $row[0]; 
         }
    и получаю mysql_fetch_array() expects parameter 1 to be resource, null given

    не пойму вчем ошибка
     
    #20746 BRR, 21 Jun 2012
    Last edited: 25 Jun 2012
  7. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,508
    Likes Received:
    389
    Reputations:
    101
    До получения данных из таблицы нужно соединиться с БД
     
  8. BRR

    BRR New Member

    Joined:
    4 Jun 2012
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    krypt3r я делаю соединение,и причем тут это вобще,тогда он выдал бы другию ошибку.

    актуально.
     
  9. евген321

    евген321 New Member

    Joined:
    14 Jun 2012
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    добрый вечер ,у меня вопрос о слиаве денег с симкарт билайн,есть канал где можно много взять новых сим,знаю что есть много способов,поделитесь кто знает,зарание спс)))
     
  10. Metal-Core

    Metal-Core Member

    Joined:
    20 Sep 2011
    Messages:
    149
    Likes Received:
    14
    Reputations:
    0
    Как через curl сделать 2 запрос после авторизации? напр получить через GET содержимое "Настройки" ? пробывал делать так:

    PHP:
    $evo curl_init();{
            
    $data "login=11&Domain=mail.ru&password=22";
          
            
    $url = array('http://auth.mail.ru/cgi-bin/auth','http://e.mail.ru/cgi-bin/folders?985945808');
            
    $i 0;
            
    curl_setopt($evoCURLOPT_COOKIESESSION,true);
            
    curl_setopt($evoCURLOPT_HEADER,1);
            
    curl_setopt($evoCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($evoCURLOPT_URL,$url[$i]);
            
    curl_setopt($evoCURLOPT_POST,true);
            
    curl_setopt($evoCURLOPT_COOKIEJAR'cookie.txt'); 
            
    curl_setopt($evoCURLOPT_COOKIEFILE'cookie.txt'); 
            
    curl_setopt($evoCURLOPT_POSTFIELDS,$data);
            
    curl_setopt($evoCURLOPT_FOLLOWLOCATIONtrue);
            
    curl_setopt($evoCURLOPT_USERAGENT,'Opera/11.0 (compatible; MSIE 5.01; Windows NT 5.0)');
            
            
    $post[0] = curl_exec($evo); 
            
    $i++;
            
    $post[0] = curl_exec($evo); echo $post[0];
     
  11. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    499
    Likes Received:
    701
    Reputations:
    748
    PHP:
    function requester($url$post 0$cookies ''$head 1)
    {
          
    $cl curl_init($url);
          
    curl_setopt($clCURLOPT_RETURNTRANSFER1);
          
    curl_setopt($clCURLOPT_HEADER$head);
          
    curl_setopt($clCURLOPT_COOKIE$cookies);
          
    curl_setopt($clCURLOPT_USERAGENT'Opera/9.25 (Windows NT 6.0; U; ru)');
          if (
    $post) {
              
    curl_setopt($clCURLOPT_POST1);
              
    curl_setopt($clCURLOPT_POSTFIELDS$post);
          }
          
    $line curl_exec($cl);
          
    curl_close($cl);
          return 
    $line;
    }

    function 
    mru_auth($m$p)
    {
        
    preg_match('#(\S+)\@(\S+)#'$m$data);
        
    preg_match('#Set-Cookie: (Mpop\S+;)#'requester('https://auth.mail.ru/cgi-bin/auth''Domain='.$data[2].'&Login='.$data[1].'&Password='.$p.'&level=0'), $cook);
        if(
    $cook[1]){return $cook[1];}
        else{die(
    ' [!] bad authorization');}
    }

    //authorization
    $cook mru_auth('email@bk.ru''passw0rd');

    //query1
    print requester('http://e.mail.ru/cgi-bin/folders?985945808'0$cook);

    //query2.. etc
    print requester('http://e.mail.ru/cgi-bin/options'0$cook);
     
    1 person likes this.
  12. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,582
    Likes Received:
    173
    Reputations:
    75
    такой вопросец
    Так нормально пашет

    PHP:
    $im imagecreatefromjpeg("$name_image");
    а так ошибка

    PHP:
    $extension jpeg;
    $im imagecreatefrom.$extension.("$name_image");
    как сделать правильно?
     
  13. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    Какой ты хитрожопый шахид)
    PHP:
    $extension ="jpeg";//Кавычки!!
    switch($extension ){
        case 
    "jpeg":case ".jpeg":case ".jpg":$im=imagecreatefromjpeg($name_image);break;
        case 
    ".png":case "png":$im=imagecreatefrompng($name_image);break;
        case 
    ".gif":case "gif":$im=imagecreatefromgif($name_image);break;
        default:
    //тут обработка исключения
    }
    Признавайся,на каком языке раньше кодил?ни на каком?

    А на аватаре ты собственной персоной? пронзительный индийский взгляд..
     
    #20753 Darth Padla, 24 Jun 2012
    Last edited: 24 Jun 2012
    2 people like this.
  14. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    Ну точно индус!
    header("Content-type; image/$extension");
    тут должно быть :
     
    #20754 Darth Padla, 24 Jun 2012
    Last edited: 24 Jun 2012
  15. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    Повторю свой вопрос.
    PHP:
     $time=explode(":",$lastpost['time']); 
    $date=explode(".",$lastpost['date']);
     if(
    $diff_weeks==0){ 

        
    //mktime(часы(24),минуты,секунды,месяц,число,год);
                                        
    $epoch_1=mktime($time[0],$time[1],$time[2],$date[1],$date[0],$date[2]);
                                        
    //Текущий момент..
                                        
    $epoch_2=time();
                                        
    $diff_seconds=$epoch_2-$epoch_1;
                                        
    $diff_weeks=floor($diff_seconds/604800);
                                        
    $diff_seconds-=$diff_weeks*604800;
                                        
    $diff_days=floor($diff_seconds/86400);
                                        
    $diff_seconds-=$diff_days*86400;
                                        
    $diff_hours=floor($diff_seconds/3600);
                                        
    $diff_seconds-=$diff_hours*3600;
                                        
    $diff_minutes=floor($diff_seconds/60);
                                        
    $diff_seconds-=$diff_minutes*60;
                                        
    $total_diff=$diff_days;
                                        switch(
    $diff_days){
                                            case 
    1:$total_diff.=" день ";break;
                                            case 
    2:case 3:case 4:$total_diff.=" дня ";break;
                                            case 
    5:case 6:$total_diff.=" дней ";break;
                                            default:break;
                                        }
    //Я был не против,если бы писалось 0 часов - но оно само почему то исчезает                                     $total_diff.=$diff_hours;
                                        
    switch($diff_hours){
                                        case 
    1:case 21:$total_diff.=" час ";break;
                                        case 
    2:case 3:case 4:case 22:case 23:$total_diff.=" часа ";break;
                                        case 
    5:case 6:case 7:
                                        case 
    8:case 9:case 10:
                                        case 
    11:case 12:case 13:
                                        case 
    14:case 15:case 16:
                                        case 
    17:case 18:case 19:
                                        case 
    20:
                                        
    $total_diff.=" часов ";break;
                                        default:
    /*но если вставить тут echo " часов "; ,то цифра 00 появляется 0_0 */break;
                                        }

                                        
    $total_diff.=ltrim($diff_minutes,0);
     
    //Здесь почему-то выдает - 00,001,002,003,...,010,011,...,059 если нет часов($diff_hours==0). 
        //если есть,то - 00,01,02,...,09,10,11,...,59. 
        //Почему нули не убираются?                                     switch($diff_minutes%10){
                                        
    case 1:$total_diff.=" минуту ";break;
                                        case 
    2:case 3:case 4:$total_diff.=" минуты ";break;
                                        case 
    5:case 6:case 7:case 8:case 9:case 0:$total_diff.=" минут ";break;
                                        default:break;
                                        }
                                        if(
    $diff_days==and $diff_hours==and $diff_seconds>0){$total_diff.=$diff_seconds." секунд ";}
                                        
    $total_diff.="назад";
                                        echo 
    $total_diff;
    }else{ 
        echo 
    $lastpost['date']." в ".$lastpost['time']; 

     
  16. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Darth Padla Покажите входные данные (а имено $lastpost, $diff_weeks, $epoch_2) на которых проявляется ошибка

    AnGeI Читайте мануал внимательно:
    Code:
    Type hints can not be used with scalar types such as int or string. Traits are not allowed either. 
    Булевский тип - также входит в понятие скалярный.
     
    _________________________
    #20756 Gifts, 24 Jun 2012
    Last edited: 24 Jun 2012
    1 person likes this.
  17. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,508
    Likes Received:
    389
    Reputations:
    101
    Жесть. Если бы в сутках было, скажем, 1024 часа, код был бы аналогичным?
    PS. Добавьте case 0: куда вам надо
     
  18. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    во первых,грамотно пишецо не булевский,а булев.
    во вторых-извольте - к примеру

    PHP:
    $lastpost['date']='25.06.2012';
    $lastpost['time']='17:49:09';
    $epoch_2=1340633524;
    $diff_weeks=0;//когда оно != 0 проблемы не возникает разумеется

    $total_diff выходит '0022 минуты 55 секунд назад'
    PHP:
    $lastpost['date']='24.06.2012';
    $lastpost['time']='15:08:54';
    $epoch_2=1340633524;
    $diff_weeks=0;
    $total_diff '1 день 3 часа 3 минуты назад'
    PHP:
    $lastpost['date']='25.06.2012';
    $lastpost['time']='18:15:16';
    $epoch_2=1340633783;
    $diff_weeks=0;
    $total_diff '001 минуту 7 секунд назад'
    PHP:
    $lastpost['date']='25.06.2012';
    $lastpost['time']='17:15:16';
    $epoch_2=1340633872;
    $diff_weeks=0;
    $total_diff '01 час 2 минуты назад'
    PHP:
    $lastpost['date']='25.06.2012';
    $lastpost['time']='07:05:16';
    $epoch_2=1340634041;
    $diff_weeks=0;
    $total_diff '011 часов 15 минут назад'
     
  19. BRR

    BRR New Member

    Joined:
    4 Jun 2012
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
  20. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    736
    Likes Received:
    73
    Reputations:
    19
    Ты в том коде к БД не подкл.
    Сделай свойство в которое будешь передавать идентификатор соединения с БД.
     
Loading...
Similar Threads - Новичкам задаем вопросы
  1. Kaimi
    Replies:
    338
    Views:
    118,214
  2. Варик
    Replies:
    3
    Views:
    1,901
  3. insulin
    Replies:
    6
    Views:
    1,753
  4. _Great_
    Replies:
    2,100
    Views:
    377,071
Thread Status:
Not open for further replies.