Здраствуйте - я новачок в 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; }
Код (Text): $reg_success = $ = $user->regUser ($login, $password); убери Код (Text): $ = интерпретатор ясно дал понять, где ошибка. p.s. На мой взгляд человек, который пишет по-русски с такими ошибками вряд ли сможет писать на каком-то другом языке без ошибок.
И как язык общения связан с языком программирования? По твоему только рускоязычные люди могут писать программы? Тогда филологи должны быть писец какими прогерами
Согласен. Судя по нику - с Украины. Погорячился. Если человек не может освоить правила правописания естественного языка, как он освоит правила правописания языка искусственного? Заданный вопрос только подтверждает это. Это вы к чему? Форум русскоязычный. Ага. Боюсь представить кем бы был Толстой.
нуу гдеж вы увидели код написанный на русском или на украинском языке? вы чего? даже английский ненужно знать.. просто пишите на английском код
после $reg_success = $user->regUser($login, $password); напиши var_dump($reg_success); это позволит узнать, что вернулось из метода
значит запрос обломился. надо глянуть запрос. $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);
не тот метод скопировал, прости вот 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); }
тоже никакой ошыбки только 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()."')"); }
Запрос к чему??? к подключению БД??? так он в примере был в коде самом верхнем <?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 секунд: с етим кодом тоже самое
ничего невыдает 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); }
заменял на то что говорят. ничего неминяеться. А сам ещо учусь на php - потому и спрашываю советы. Просто, повторюсь, если пропишу в скрипте имя и пароль - то в базу внесетсья - а если через вод от пользователя - то возвращает фолз. А по видеоурокам такойже метод - вносит без проблем. Зато и не понимаю - что делаю не так...
вот и я непонимаю может здесь неправельно запрос делает??? или невоспринимает то что я ввожу(имею введу что принимает как будто пустые строки)??? if ($login == "") return false; if ($password == "") return false; $password = md5($password);
о, точно! =) напиши так: Код (PHP): public function regUser($login, $password) { var_dump('ЛОГИН', $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); }