За последние 24 часа нас посетили 19148 программистов и 1642 робота. Сейчас ищут 878 программистов ...

Помогите розобраться в PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем mukachevo, 7 сен 2013.

  1. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    Здраствуйте - я новачок в php - делаю большенство по инструкции - но всеравно не все получаеться. Укажыте пожалуйста на мои ошыбки если есть такие.
    Вот ошыбка
    вернее ее отсуствие. при внисении даных в фому регистрации - в базу даных ничего незаписываетсья. Ошыбок невыдает.
    форма регистрации
    ?php
    require_once "lib/user_class.php";
    $user = User::getObject();
    if (isset($_POST["reg"])) {
    $login = $_POST["login"];
    $password = $_POST["passord"];
    $reg_success = $user->regUser($login, $password);
    }

    ?>
    <html>
    <head>
    <title>Регистраия и авторизация пользователей</title>
    </head>
    <body>
    <h1>Регистрация</h1>
    <form name="reg" action="index.php" method="post">
    <table>

    <tr>
    <td>Логин</td>
    <td>
    <input type="text" name="login" />
    </td>
    </tr>

    <tr>
    <td>Пароль</td>
    <td>
    <input type="password" name="password" />
    </td>
    </tr>

    <tr>
    <td colspan="2">
    <input type="submit" name="reg" value="Заренистрироваться" />
    </td>
    </tr>

    </table>
    </form>


    и форма обработки даных

    class User {

    private $db;

    private static $user = null;

    private function __construct() {
    $this->db = new mysqli("скрыт", "скрыт", "скрыт", "скрыт");
    $this->db->query("SET NAMES 'utf8'");
    }

    public static function getObject() {
    if (self::$user === null) self::$user = new User();
    return self::$user;
    }

    public function regUser($login, $password) {
    if ($login == "") return false;
    if ($password == "") return false;
    $password = md5($password);
    return $this->db->query("INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')");
    }

    private function checkUser($login, $password) {
    $result_set = $this->db->query("SELECT `password` FROM `users` WHERE `login`='$login'");
    $user = $result_set->fetch_assoc();
    $result_set->close();
    if (!$user) return false;
    return $user["password"] === $password;
    }
     
  2. wolandino

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

    С нами с:
    5 фев 2006
    Сообщения:
    193
    Симпатии:
    0
    Адрес:
    Россия, Астрахань
    Код (Text):
    1.     $reg_success = $ = $user->regUser ($login, $password);
    убери
    Код (Text):
    1. $ =
    интерпретатор ясно дал понять, где ошибка.

    p.s. На мой взгляд человек, который пишет по-русски с такими ошибками вряд ли сможет писать на каком-то другом языке без ошибок.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    не у всех русский является родным. Тут выглядит все именно так. Надеюсь, я не ошибаюсь.
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    И как язык общения связан с языком программирования?
    По твоему только рускоязычные люди могут писать программы?
    Тогда филологи должны быть писец какими прогерами:)
     
  5. wolandino

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

    С нами с:
    5 фев 2006
    Сообщения:
    193
    Симпатии:
    0
    Адрес:
    Россия, Астрахань
    Согласен. Судя по нику - с Украины. Погорячился.

    Если человек не может освоить правила правописания естественного языка, как он освоит правила правописания языка искусственного? Заданный вопрос только подтверждает это.
    Это вы к чему? Форум русскоязычный.
    Ага. Боюсь представить кем бы был Толстой.
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    завязывайте с оффтопиком =)
     
  7. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    Вообщето у нас русскому неучат - и я пишу как умею. А на украинськам ты ничего непоймеш!!!
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    нуу гдеж вы увидели код написанный на русском или на украинском языке? вы чего? даже английский ненужно знать.. просто пишите на английском код :D
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    после
    $reg_success = $user->regUser($login, $password);
    напиши
    var_dump($reg_success);
    это позволит узнать, что вернулось из метода
     
  10. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    вернул булувськое значение bool(false)
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    значит запрос обломился. надо глянуть запрос.
    $result_set = $this->db->query("SELECT `password` FROM `users` WHERE `login`='$login'");
    замени на
    $sql = "SELECT `password` FROM `users` WHERE `login`='$login'";
    echo $sql;
    $result_set = $this->db->query($sql);
     
  12. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    SELECT `password` FROM `users` WHERE `login`=''bool(false)


    выводит вообще строку на екран
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не тот метод скопировал, прости

    вот

    public function regUser($login, $password) {
    if ($login == "") return false;
    if ($password == "") return false;
    $password = md5($password);
    $sql = "INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')";
    echo $sql;
    return $this->db->query($sql);
    }
     
  14. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    тоже никакой ошыбки только bool(false)

    Добавлено спустя 3 минуты 2 секунды:
    но если пробую добавить в ручную - то тогда добавляет в базу
    $success = $mysqli->query("INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('User1', '".md5("123")."', '".time()."')");

    _______________________________________________________________
    а автоматически нехочет
    public function regUser($login, $password) {
    if ($login == "") return false;
    if ($password == "") return false;
    $password = md5($password);
    return $this->db->query("INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')");
    }
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а запрос-то где? о_О
     
  16. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    Запрос к чему??? к подключению БД??? так он в примере был в коде самом верхнем

    <?php

    class User {

    private $db;

    private static $user = null;

    private function __construct() {
    $this->db = new mysqli ("хост", "имя", "пароль", "база");
    $this->db->query("SET NAMES 'utf8'");
    }

    public static function getObject() {
    if (self::$user === null) self::$user = new User();
    return self::$user;
    }

    public function regUser($login, $password) {
    if ($login == "") return false;
    if ($password == "") return false;
    $password = md5($password);
    return $this->db->query("INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')");
    }

    private function checkUser($login, $password) {
    $result_set = $this->db->query("SELECT `password` FROM `users` WHERE `login`='$login'");
    $user = $result_set->fetch_assoc();
    $result_set->close();
    if (!$user) return false;
    return $user["password"] === $password;
    }

    public function isAuth() {
    session_start();
    $login = $_SESSION["login"];
    $password = $_SESSION["password"];
    return $this->checkUser($login, $password);
    }

    public function login($login, $password) {
    $password = md5($password);
    if ($this->checkUser($login, $password)) {
    session_start();
    $_SESSION["login"] = $login;
    $_SESSION["password"] = $password;
    return true;
    }
    else return false;
    }

    public function __destruct() {
    if ($this->db) $this->db->close();
    }

    }



    ?>

    Добавлено спустя 1 минуту 15 секунд:
    с етим кодом тоже самое
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    должно вывести запрос. выводит?
     
  18. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    ничего невыдает 12x12.besaba.com - вот сайт на котором експерементирую. вот регитсья недает. bool(false) Ошыбка при регистрации!!!

    закинул с кодом
    public function regUser($login, $password) {
    if ($login == "") return false;
    if ($password == "") return false;
    $password = md5($password);
    $sql = "INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')";
    echo $sql;
    return $this->db->query($sql);
    }
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а если вместо echo $sql; написать var_dump($sql); то что?
     
  20. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    тоже самое bool(false) Ошыбка при регистрации!!!
     
  21. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    а ты вообще заменял ? сам ничего не делаешь, а хочешь чтоб ошибка исчезла.
     
  22. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    заменял на то что говорят. ничего неминяеться. А сам ещо учусь на php - потому и спрашываю советы. Просто, повторюсь, если пропишу в скрипте имя и пароль - то в базу внесетсья - а если через вод от пользователя - то возвращает фолз. А по видеоурокам такойже метод - вносит без проблем. Зато и не понимаю - что делаю не так...
     
  23. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это странно
     
  24. mukachevo

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

    С нами с:
    7 апр 2013
    Сообщения:
    15
    Симпатии:
    0
    вот и я непонимаю может здесь неправельно запрос делает??? или невоспринимает то что я ввожу(имею введу что принимает как будто пустые строки)???

    if ($login == "") return false;
    if ($password == "") return false;
    $password = md5($password);
     
  25. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    о, точно! =) напиши так:
    Код (PHP):
    1. public function regUser($login, $password) {
    2. var_dump('ЛОГИН', $login, 'ПАРОЛЬ', $password);
    3. if ($login == "") return false;
    4. if ($password == "") return false;
    5. $password = md5($password);
    6. $sql = "INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')";
    7. echo $sql;
    8. return $this->db->query($sql);
    9. }