За последние 24 часа нас посетили 22387 программистов и 1187 роботов. Сейчас ищут 664 программиста ...

$_POST и классы ООП

Тема в разделе "PHP для новичков", создана пользователем iNEEdhLw, 22 окт 2014.

  1. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    Перешел к изучению ООП на php и поставил себе задачу написать класс, который регистрировал бы пользователя в бд.
    Собственно, мне нужно передать значения суперглобального массива POST в свойства класса, чтобы класс мог оперировать ими в своем методе, как я понимаю.
    Буду благодарен за дельные советы и поправки (только "разжуйте", если можно)
    Код (PHP):
    1. <?php
    2. $dbc = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
    3.  
    4. $logg = $_POST['logg'];
    5. $pass = $_POST['pass'];
    6.  
    7.  
    8.  
    9.  
    10. class registration 
    11. {        
    12.  
    13.     public $log = $_POST['logg'];
    14.     protected $sql_create_table = 'CREATE TABLE USERS
    15. (Login     char(30)       NOT NULL,
    16. Password     char(30)  NOT NULL);' ;
    17.     protected $sql_insert = 'INSERT INTO USERS VALUE "$logg", "$pass"';
    18.     
    19.     public function __construct()
    20.     {   
    21.       if($dbc)
    22.       {
    23.           if(!mysql_query($sql_create_table))
    24.           {
    25.              mysql_query($sql_create_table);
    26.              mysql_query($sql_insert);
    27.           }
    28.           else{
    29.              mysql_query($sql_insert);  
    30.           }
    31.           
    32.       }      
    33.     }
    34. }
    35. $user = new registration;
    36. ?>
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Нравятся мне такие вопросы. При чём здесь $_POST и ООП? Работа с суперглобальными переменными из метода класса не меняется. Вообще, методы класса - это, по сути, самые обычные функции, со скрытым параметром $this
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Лучше всего привыкать к ООП на примере уже существующих классов. Например, использовать объектный интерфейс MySQLi, вместо функций mysql_.
     
  4. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    Появилось немного свободного времени - решил доделать код, но наткнулся на проблему, которую не знаю как решить из-за слабых знаний.
    Ниже представленный код вызывает ошибку [​IMG]
    Код (Text):
    1. <?php
    2. $host = '**************';
    3. $user = '*********************';
    4. $pswd = '********';
    5.  
    6. $dbc = mysql_connect($host, $user, $pswd) or die("i can't connected to mysql");  
    7. class registration
    8. {
    9.    
    10.     protected $sql_create_table = 'CREATE TABLE USERS
    11. (Login     char(30)       NOT NULL,
    12. Password     char(30)  NOT NULL);' ;
    13.     protected $sql_insert = 'INSERT INTO USERS VALUE "$logg", "$pass"';
    14.    
    15.     public function __construct($logg, $pass)
    16.     {
    17.    
    18.       $logg = $_POST['logg'];  
    19.       $pass = $_POST['pass'];  
    20.      
    21.       if($dbc)
    22.       {
    23.           if(!mysql_query($sql_create_table))
    24.           {
    25.              mysql_query($sql_create_table);
    26.              mysql_query($sql_insert);
    27.           }
    28.           else{
    29.              mysql_query($sql_insert);  
    30.           }
    31.          
    32.       }      
    33.     }
    34. }
    35. $user = new registration;
    36. ?>
     
  5. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Русский язык знаком? Английский с переводчиком?
    а) отсчитывай 6 строку
    б) читай ошибку
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Там же написано.
    Что именно вызывает затруднения?
     
  7. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    Что? Уфф, что-то странно творится: неделю назад там была другая ошибка, а сейчас я не проверив нечего выдал то, что было тогда.
    Интересно...

    Добавлено спустя 11 минут 20 секунд:
    на этот код выдает ошибку, в чем проблема?
    Код (Text):
    1. <?php
    2. $host = '31.170.165.121';
    3. $user = 'u815731020_admin';
    4. $pswd = 'ddtzet210797';
    5.  
    6. $dbc = mysql_connect($host, $user, $pswd) or die("i can't connected to mysql");  
    7. class registration
    8. {
    9.    
    10.     protected $sql_create_table = 'CREATE TABLE USERS
    11. (Login     char(30)       NOT NULL,
    12. Password     char(30)  NOT NULL);' ;
    13.     protected $sql_insert = 'INSERT INTO USERS VALUE "$logg", "$pass"';
    14.    
    15.     public function __construct($logg, $pass)
    16.     {
    17.    
    18.       $logg = $_POST['logg'];  
    19.       $pass = $_POST['pass'];  
    20.      
    21.       if($dbc)
    22.       {
    23.           if(!mysql_query($sql_create_table))
    24.           {
    25.              mysql_query($sql_create_table);
    26.              mysql_query($sql_insert);
    27.           }
    28.           else{
    29.              mysql_query($sql_insert);  
    30.           }
    31.          
    32.       }      
    33.     }
    34. }
    35. $user = new registration;
    36. ?>
    Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '31.170.165.121' (111 "Connection refused") in /home/u815731020/public_html/newEmptyPHP.php on line 6
    акк на хостингере.ком.юа, вроде все правильно вписано :/
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Переводили сообщение? Не может скрипт достучаться до сервера mysql - сервер сбрасывает соединение.
     
  9. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    Переводил, но не знаю в чем проблема...
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Проверяйте адрес сервера, проверяйте порты, пароли. Напишите на хостинг, если всё правильно, но не соединяет. Доступ к базе по IP - это требование хостера? этот IP физически другого компьютера? Если другого, у mysql должна быть настройка, разрешающая удалённый доступ
     
  11. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    mkramer вы вообще со многими хостингами работали?
     
  12. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Со многими. Если честно, ip мне не разу не предлагали указывать для соединения. Чаще всего localhost, иногда что-то типа bbb.mysql. Ganzal, вы не согласны, что проблема ТС в установке соединения? Я вижу, что mysql-сервер его посылает подальше, предполагаемые варианты - данные для соединения неверно указаны, mysql неверно настроена.
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Шаред часто имеет внешний мускул.
     
  14. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ну ок, буду знать. Но в любом случае, я дал правильный, и, как мне кажется, единственно возможный совет ТС - проверить данные соединения, и если всё 100% правильно, писать хостеру
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    на шаредах же обычно есть интерфейс для PMA. Там можно проверить правильность ввода логина и пароля.
     
  16. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    ты только что выложил логин и пароль

    Добавлено спустя 16 секунд:
    и даже IP

    Добавлено спустя 2 минуты 33 секунды:
    [​IMG] пингуется

    Добавлено спустя 1 минуту 6 секунд:
    пингуется)

    Добавлено спустя 9 минут 12 секунд:
    а базу выбираешь в которую запись делаешь?

    Добавлено спустя 12 минут:
     
  17. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Еще возможен факт что mysql на хосте уже не работает, по этому только mysqli
    Попробуй разными подключиться, получится ли?
     
  18. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    чушь какая. а что ему тогда сообщает что попытка подключения завершилась сообщением "Connection refused" от сервера? святый духъ?
     
  19. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Ну хотя да.
    Что-то я не туда посмотрел =)
    Что-то тут с доступами владельцем файлами походу. Нет?

    И разве канает так делать?
    Код (PHP):
    1. $dbc = mysql_connect($host, $user, $pswd) or die("i can't connected to mysql");  
    2. class registration 
    3. {
    4.     public function __construct($logg, $pass)
    5.     {
    6.       if($dbc)
    7.       {
    Как класс видит $dbc переменную? Что-то тут накосили по жесткой.
    Блин попробуй без классов и всего подключиться к базе.
    Чтобы переменные были в одной области-видимости.
     
  20. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Так конечно не канает, но у ТС выполнение до коструктора просто не доходит. А так, в конструкторе надо global $dbc; прописывать
     
  21. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    нет. идет подключение к серверу с некоторой аккредитацией на что сервер принимает решение отказать в подключении. скорее всего в настройках сервера не разрешено подключение с внешнего интерфейса и/или конкретного ип. ибо если бы не было гранта для пары юзер-хост ошибка выглядела иначе.