За последние 24 часа нас посетили 16155 программистов и 1666 роботов. Сейчас ищет 891 программист ...

Мать их классы...

Тема в разделе "PHP для новичков", создана пользователем АртемГород, 15 июн 2017.

Метки:
  1. АртемГород

    АртемГород Новичок

    С нами с:
    10 май 2017
    Сообщения:
    8
    Симпатии:
    0
    на одном сайте
    # Автоподгрузка классов
    function __autoload($name){ include("classes/_class.".$name.".php");}

    # Функции
    $func = new func;

    $ip = $func->UserIP;

    возвращает Ip пользователя, на другом в индекс.пхп

    после добавления

    # Функции
    $func = new func;

    от сайта остается белая страница. не могу поймать Ip, как в гребанный класс передать параметры если просто инклудить его??
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    депрекатед ибо spl_autoload_register() https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md

    скобочки где?

    смотри лог ошибок, там фатал
     
  3. АртемГород

    АртемГород Новичок

    С нами с:
    10 май 2017
    Сообщения:
    8
    Симпатии:
    0
  4. АртемГород

    АртемГород Новичок

    С нами с:
    10 май 2017
    Сообщения:
    8
    Симпатии:
    0
    как сделать его работу с помощью инклуда? $func = new func(); тоже дает ошибку
    --- Добавлено ---
    при создании экземпляра класса Call to undefined method func::IpCode() in www/site4/public_html/inc/classes.php on line 119
    вот файл
    <?
    class isender{

    var $Hosts = "";

    /*======================================================================*\
    Function: __construct
    Descriiption: Конструктор класса
    \*======================================================================*/
    function __construct(){

    $this->Hosts = str_replace("www.","",$_SERVER['HTTPS_HOST']);

    }

    /*======================================================================*\
    Function: SendRegKey
    Descriiption: Отправляет регистрационный ключ
    \*======================================================================*/
    function SendRegKey($mail, $key){

    $text = "Вы или кто-то другой начал(а) процесс регистрации аккаунта в на ваш электронный адрес.<br><br>";
    $text.= "Чтобы завершить регистрацию в , пожалуйста, перейдите по следующей ссылке: <a href='".$this->Hosts."/signup/key/{$key}'>";
    $text.= "".$this->Hosts."/signup/key/{$key}</a>";
    $subject = "Запрос на регистрацию в ";

    return $this->SendMail($mail, $subject, $text);

    }

    /*======================================================================*\
    Function: RecoveryPassword
    Descriiption: Восстановление пароля
    \*======================================================================*/
    function RecoveryPassword($user, $pass, $mail){

    $text.= "<b>Уважаемый(ая) пользователь</b>, вы создали заявку о восстановлении пароля. <br><br>";
    $text.= "Ваш пароль: {$pass}";
    $subject = "Сообщение отправлено автоматически с проекта ";

    return $this->SendMail($mail, $subject, $text);

    }

    /*======================================================================*\
    Function: SendAfterReg
    Descriiption: Отправляет данные после регистрации
    \*======================================================================*/
    function SendAfterReg($user, $mail, $pass){

    $text = "<b>Уважаемый(ая) пользователь</b>, Вы завершили регистрацию аккаунт в игре . Желаем вам больших заработков!<br><br>";
    $text.= "Для входа используйте данные: {$user};{$pass}.";
    $subject = "Завершение регистрации в bestmine.online";

    return $this->SendMail($mail, $subject, $text);

    }

    /*======================================================================*\
    Function: SetNewPassword
    Descriiption: Отправляет данные после смены пароля
    \*======================================================================*/
    function SetNewPassword($user, $pass, $mail){

    $text = "<b>Уважаемый(ая) пользователь,</b><BR />";
    $text.= "Ваши новые данные для входа: {$user};{$pass}<BR />";
    $text.= "Если вы не проводили данные изменения или вам нужна помощь, пожалуйста, обратитесь в Службу Поддержки.";
    $subject = "Смена пароля в ";

    return $this->SendMail($mail, $subject, $text);

    }


    /*======================================================================*\
    Function: Headers
    Descriiption: Создание заголовков письма
    \*======================================================================*/
    function Headers(){

    $headers = "MIME-Version: 1.0\r\n";
    $headers.= "Content-type: text/html; charset=Windows-1251\r\n";
    $headers.= "Date: ".date("d.m.Y H:m:s",time())."\r\n";
    $headers.= "From: 123@mail.ru \r\n";

    return $headers;

    }

    /*======================================================================*\
    Function: SendMail
    Descriiption: Отправитель
    \*======================================================================*/
    function SendMail($recipient, $subject, $message){

    $message .= "<br><br>
    <small>";
    return (mail($recipient, $subject, $message, $this->Headers())) ? true : false;

    }



    }
    class func {
    public $UserIP = "Undefined"; # IP пользователя
    public $UserCode = "Undefined"; # Код от IP
    public $TableID = -1; # ID таблицы
    public $UserAgent = "Undefined"; // Браузер пользователя
    public $Userparse = "Undefined"; // Браузер пользователя

    /*======================================================================*\
    Function: __construct
    Output: Нет
    Descriiption: Выполняется при создании экземпляра класса
    \*======================================================================*/
    public function __construct(){
    $this->UserIP = $this->GetUserIp();
    $this->UserCode = $this->IpCode();
    $this->UserAgent = $this->UserAgent();
    $this->Userparse = $this->Userparse();
    }

    /*======================================================================*\
    Function: __destruct
    Output: Нет
    Descriiption: Уничтожение объекта
    \*======================================================================*/
    public function __destruct(){

    }



    /*======================================================================*\
    Function: IpToLong
    Descriiption: Преобразует IP в целочисленное
    \*======================================================================*/
    public function IpToInt($ip){

    $ip = ip2long($ip);
    ($ip < 0) ? $ip+=4294967296 : true;
    return $ip;
    }


    /*======================================================================*\
    Function: IpToLong
    Descriiption: Преобразует целочисленное в IP
    \*======================================================================*/
    public function IntToIP($int){
    return long2ip($int);
    }


    /*======================================================================*\
    Function: GetUserIp
    Output: UserIp
    Descriiption: Определяет IP пользователя
    \*======================================================================*/
    public function GetUserIp(){

    if($this->UserIP == "Undefined"){

    if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND !empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {

    $client_ip = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : "unknown" );
    $entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);

    reset($entries);

    while (list(, $entry) = each($entries))
    {
    $entry = trim($entry);
    if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
    {

    $private_ip = array(
    '/^0\./',
    '/^127\.0\.0\.1/',
    '/^192\.168\..*/',
    '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
    '/^10\..*/');

    $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

    if ($client_ip != $found_ip)
    {
    $client_ip = $found_ip;
    break;
    }

    }

    }

    $this->UserIP = $client_ip;
    return $client_ip;

    }else return ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : "unknown" );

    }else return $this->UserIP;

    }
    }

    ?>
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чувак, я читать не буду эту простыню, у меня есть свои развлечения.
    чтобы убрать ошибку, нужно знать, что за ошибка. ты даже описания не приводишь. Читай внимательно, переводи ошибки, если не умеешь по-английски читать. Либо учись делать сам, либо ищи того, кто сделает, иногда за бабло.

    но мы тут обычно рады помочь, может кто поможет.
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    Скобки можно не писать, если в конструктор ничего не передается.
    Fatal error: Uncaught Error: Call to undefined method func::IpCode() in C:\OpenServer\domains\test\test\_class.func.php:17 Stack trace: #0 C:\OpenServer\domains\test\index.php(8): func->__construct() #1 {main} thrown in C:\OpenServer\domains\test\test\_class.func.php on line 17


    PHP:
    1.     public function __construct ()
    2.     {
    3.         $this->UserIP = $this->GetUserIp();
    4.         $this->UserCode = $this->IpCode(); # ???
    5.        $this->UserAgent = $this->UserAgent();
    6.         $this->Userparse = $this->Userparse();
    7.     }
    у тебя функция в классе отсутствует.

    выше код, два класса в одном файле верно ? раздельно закинь "каждый класс в свой файл"

    ты же не будешь автоинклюдить класс isender в _class.func.php, по логике такой класс будет загружаться с скрипта _class.isender.php
     
  7. АртемГород

    АртемГород Новичок

    С нами с:
    10 май 2017
    Сообщения:
    8
    Симпатии:
    0
    Да, спасибо, я уже понял это, не перенес все функции) просил удалить тему
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не надо удалять. это нормально, если что-то не перенёс, нашёл и исправил проблему. Другим может понадобиться тоже.
     
  9. АртемГород

    АртемГород Новичок

    С нами с:
    10 май 2017
    Сообщения:
    8
    Симпатии:
    0
    Как блин таким умным стать, читаю эти гребанные классы, ничегл не понимаю, все "зашло" нормально в голову по пхп кроме гребанных классов и их работы и обращениям к ним
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. error_reporting ( E_ALL );
     
    gruth и mkramer нравится это.