Ответы пользователя по тегу PHP
  • Как исправить ошибку "На этой странице обнаружена циклическая переадресация"?

    Действительно, трудно понять, где подвох.

    Рекомендую вместо header() заюзать exit(), таким образом увидете, какой редирект срабатывает и можно будет уже разбираться в конкретном месте.

    На первый взгляд, похоже, что лажает
    if($forum_type['alliance'] != $session->alliance){
            header("Location: ".$_SERVER['PHP_SELF']);
    }

    т.к. не вижу, где устанавливает $session->alliance, но это может быть не так. Дебажьте :)
    Ответ написан
    Комментировать
  • Как использовать объект как поле класса в php?

    Сделать родиельский класс, в котором будут грузиться классы для БД, сессии итп в его свойства.

    Затем, при создании новых классов екстендить родительский, например:
    class MainLogic {
    	protected $db;
    
    	function __construct() {
    		$this->db = new DB('login', 'pass', 'database'); // получаем инстанс, короче
    	}
    
            function testDb() {
                 $this->db->query('...'); // will work! 
           }
    
    }
    
    class User extends MainLogic {
    	
    	public function addUser() {
    		$this->db->query(''); // also will work, тут уже это св-во есть, тк мы его пронаследовали от MainLogic
    	}
    
    }


    P.S. Если класс с логикой только один (что, в большинстве случае, также не может быть правильно) - то просто в __constuct присваивайте $this->db ссылку на класс базы и из методов MainLogic обращайтесь через $this->db.
    P.P.S. Не знаю, какой класс для работы с БД юзаете Вы, но для этих дел уже есть ActiveRecord, например.
    Ответ написан
  • Как определить php_value upload_max_filesize функциями PHP?

    По идее, если нет прав переопределить это с помощью htaccess, то и с ini_set толку не будет.
    Ответ написан
    Комментировать
  • Как получить имя caller класса PHP

    class ParentClass {
        function action() {
            echo get_class($this);
        }
    }
    Ответ написан
    Комментировать
  • Как написать скрипт оповещения смс-сообщением о новом видео на YouTube?

    Как-то так
    <?php
    
    function send_sms($to, $msg, $login, $password){
    	$u = 'http://www.websms.ru/http_in5.asp';
    	$ch = curl_init();
    
    	curl_setopt($ch, CURLOPT_HEADER, 0);
    	curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    	curl_setopt($ch, CURLOPT_POST, 1);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, 'Http_username='.urlencode($login). '&Http_password='.urlencode($password).  '&Phone_list='.$to.'&Message='.urlencode($msg));
    	curl_setopt($ch, CURLOPT_URL, $u);
    
     	$u = trim(curl_exec($ch));
     	curl_close($ch);
    
     	preg_match("/message_id\s*=\s*[0-9]+/i", $u, $arr_id );
     	$id = preg_replace("/message_id\s*=\s*/i", "", @strval($arr_id[0]) );
    
     	return $id;
    }
    
    // some defaults
    $url = 'https://gdata.youtube.com/feeds/users/USER/uploads'; //ссылка на канал
    
    $filename = './lastvideo.txt';
    $find = file_get_contents($filename);
    $find = !empty($find) ? $find : '<published>2014-01-26T04:00:00.000Z</published>'; //время публикации последнего видео на канале пользователя
    
    $mob = ''; //твой мобильный в формате +380123456789
    $login = ''; //твой логин на сервисе отправки смс
    $pass = '';//твой пароль на сервисе отправки смс
    
    // запрос к youtube
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11');
    curl_setopt($ch, CURLOPT_URL, $url);
    $page = curl_exec($ch);
    curl_close($ch);
    
    // parse
    if ($page == false) {
    	exit('Empty curl response.');
    }
    
    preg_match_all('/(<published>.*?<\/published>)/ui', $page, $matches);
    if (empty($matches[1])) {
    	exit('Empty parse results.');
    }
    
    if ($matches[1][0] != $find) {	// если новое видео вверху, то оно должно быть нулевым матчем, иначе - появилось что-то новое
    	file_put_contents($filename, $matches[1][0]); // пишем дату публикации нового видео, чтоб не было смс постоянно
    
    	$msg = 'You have a new video!!!';
    	//send_sms($mob, $msg, $login, $pass);
    }


    Сори, если чего не так, но идея такая же, как у @Medic84. Также, немного подправил код на мой вкус.

    Код не тестировал, проблемы могут быть в регулярке.
    Ответ написан