Пишу форму регистрации/авторизации и не могу разобраться с скриптом по проверке на валидность логина (существует такой уже или нет), если нет то можно создавать, если да, то выдать ошибку, что такой логин уже есть , у меня получилось сделать проверку, но оно вписывает туда первый элемент массива и дальше не идёт. Так же при отсутствии записей скрипт не выполняется, т.е. даёт ошибку, не могу разобраться как сделать проверку на отсутствие записей. вот сам код файл регистрации <!--подключение jquery и ajax библиотек--> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <!--подключение CRUD файла--> <?php require_once "CRUD.php"; // нажатие кнопки "зарегистрироваться" if(isset($_POST['signup'])) { // использование функции ValidLog $validlogin($log); if ($log == 1) { print_r("Этот логин уже занят придумайте другой "); } else { $add(); } // использование функции CRUD_ADD } ?> <!--форма регистрации--> <form action="/signup.php" method = "POST" name="register"> <p> <p><stronh></strong>Введите логин</p> <input type="text" name="login" placeholder="Не менее 6 символов"> </p> <p> <p><stronh></strong>Введите пароль</strong>:</p> <input type="text" name="password1" placeholder="не менее 6 символов"> </p> <p> <p><stronh></strong>Подтвердите пароль</strong>:</p> <input type="text" name="password2"> </p> <p> <p><stronh></strong>введите E-mail</strong>:</p> <input type="text" name="email"> </p> <p> <p><stronh></strong>Введите имя</strong>:</p> <input type="text" name="name"> </p> <p> <input type="submit" class="signupbtn" value="Зарегистрироваться" name="signup"> </p> </form> файл функций и валидации <?php function CRUD_ADD() { //чтение файла $data = file_get_contents('user.json'); //декодирование файла из json $data = json_decode($data, true); //создание нового юзера $add_arr = array( 'login' => $_POST['login'], 'password' => md5($_POST['password1']), 'email' => $_POST['email'], 'name' => $_POST['name'] ); // присвоение масива переменной $data[] = $add_arr; //кодирование в json формат $data = json_encode($data, JSON_PRETTY_PRINT); //запись данных в файл file_put_contents('user.json', $data); } function ValidLog($log) { //чтение файла $data = file_get_contents('user.json'); //декодирование файла из json $data = json_decode($data,true); foreach ($data as $value) { if ($value['login'] == $_POST['login']) { $log=1; break; } else { $log=0; break; } } } $validlogin = 'ValidLog'; $add = 'CRUD_ADD'; ?>
Код (Text): <!--подключение jquery и ajax библиотек--> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <!--подключение CRUD файла--> <?php require_once "CRUD.php"; // нажатие кнопки "зарегистрироваться" if(isset($_POST['signup'])) { // использование функции ValidLog $validlogin($log); if ($log == 1) { print_r("Этот логин уже занят придумайте другой "); } else { $add(); } // использование функции CRUD_ADD } ?> <!--форма регистрации--> <form action="/signup.php" method = "POST" name="register"> <p> <p><stronh></strong>Введите логин</p> <input type="text" name="login" placeholder="Не менее 6 символов"> </p> <p> <p><stronh></strong>Введите пароль</strong>:</p> <input type="text" name="password1" placeholder="не менее 6 символов"> </p> <p> <p><stronh></strong>Подтвердите пароль</strong>:</p> <input type="text" name="password2"> </p> <p> <p><stronh></strong>введите E-mail</strong>:</p> <input type="text" name="email"> </p> <p> <p><stronh></strong>Введите имя</strong>:</p> <input type="text" name="name"> </p> <p> <input type="submit" class="signupbtn" value="Зарегистрироваться" name="signup"> </p> </form> сами функции <?php function CRUD_ADD() { //чтение файла $data = file_get_contents('user.json'); //декодирование файла из json $data = json_decode($data, true); //создание нового юзера $add_arr = array( 'login' => $_POST['login'], 'password' => md5($_POST['password1']), 'email' => $_POST['email'], 'name' => $_POST['name'] ); // присвоение масива переменной $data[] = $add_arr; //кодирование в json формат $data = json_encode($data, JSON_PRETTY_PRINT); //запись данных в файл file_put_contents('user.json', $data); } function ValidLog($log) { print_r('1'); //чтение файла $data = file_get_contents('user.json'); //декодирование файла из json $data = json_decode($data,true); foreach ($data as $value) { if ($value['login'] == $_POST['login']) { $log=1; } else { $log=0; } } } $validlogin = 'ValidLog'; $add = 'CRUD_ADD'; ?>
PHP: <!--подключение jquery и ajax библиотек--> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <!--подключение CRUD файла--> <?php require_once "CRUD.php"; // нажатие кнопки "зарегистрироваться" if(isset($_POST['signup'])) { // использование функции ValidLog $validlogin($log); if ($log == 1) { print_r("Этот логин уже занят придумайте другой "); } else { $add(); } // использование функции CRUD_ADD } ?> <!--форма регистрации--> <form action="/signup.php" method = "POST" name="register"> <p> <p><stronh></strong>Введите логин</p> <input type="text" name="login" placeholder="Не менее 6 символов"> </p> <p> <p><stronh></strong>Введите пароль</strong>:</p> <input type="text" name="password1" placeholder="не менее 6 символов"> </p> <p> <p><stronh></strong>Подтвердите пароль</strong>:</p> <input type="text" name="password2"> </p> <p> <p><stronh></strong>введите E-mail</strong>:</p> <input type="text" name="email"> </p> <p> <p><stronh></strong>Введите имя</strong>:</p> <input type="text" name="name"> </p> <p> <input type="submit" class="signupbtn" value="Зарегистрироваться" name="signup"> </p> </form> сами функции <?php function CRUD_ADD() { //чтение файла $data = file_get_contents('user.json'); //декодирование файла из json $data = json_decode($data, true); //создание нового юзера $add_arr = array( 'login' => $_POST['login'], 'password' => md5($_POST['password1']), 'email' => $_POST['email'], 'name' => $_POST['name'] ); // присвоение масива переменной $data[] = $add_arr; //кодирование в json формат $data = json_encode($data, JSON_PRETTY_PRINT); //запись данных в файл file_put_contents('user.json', $data); } function ValidLog($log) { print_r('1'); //чтение файла $data = file_get_contents('user.json'); //декодирование файла из json $data = json_decode($data,true); foreach ($data as $value) { if ($value['login'] == $_POST['login']) { $log=1; } else { $log=0; } } } $validlogin = 'ValidLog'; $add = 'CRUD_ADD'; ?>
@Andrew21, почитайте для начала, что такое функция, зачем ей аргументы (параметры), про возврат значения. Информация про переменные и их область видимости тоже не будет лишней. --- Добавлено --- break, кстати, в одном из вариантов ветвления надо оставить.
я пробовал и без переменных и break всё одно и то же, и глобально переменную объявлял но что-то не получается как будто её не видит совсем.
С этой проблемой разобрался переменной $GLOBAL, но появилась следующая проблема. Когда я дописываю ещё одно условие на проверку пароля, то выводит, что такой пользователь уже есть но всё рано добавляет его. Почему так происходит ? PHP: Проверки if(isset($_POST['signup'])) { // использование функции ValidLog $validlogin(); if ($GLOBALS['log']== 1) { print_r("Этот логин уже занят придумайте другой "); } if ($_POST['password1']!=$_POST['password2']) { print_r("Пароли не совпадают"); } else { $add(); } // использование функции CRUD_ADD } ?>
Потому что не выполняется условие $_POST['password1']!=$_POST['password2']. Нет в коде причины не добавлять.
Как это не выполняется, я проверил, всё выполняется, когда пароли не совпадают оно и выводит сообщение, но когда пароли совпадают а логин ввожу уже существующий, мне пишет, что уже такой есть но всё равно добавляет
а почему он не должен добавлять? ну ладно прошли проверку - сказали - и все... дальше то код выполняется)))) PHP: if(isset($_POST['signup'])) { // использование функции ValidLog $validlogin(); if ($GLOBALS['log']== 1) { print_r("Этот логин уже занят придумайте другой "); } if ($_POST['password1']!=$_POST['password2']) print_r("Пароли не совпадают"); } else { $add(); } // использование функции CRUD_ADD } ?> так нагляднее - видны логические блоки 1. if ($GLOBALS['log']== 1) ? - да, ну выведем сообщение пойдем дальше 2. пароли равны - равны, добавим
никаких вопросов.... почему не идти дальше - если код так написан? --- Добавлено --- надо как-то так в вашем случае PHP: if(isset($_POST['signup'])) { // использование функции ValidLog $validlogin(); if ($GLOBALS['log']== 1) { print_r("Этот логин уже занят придумайте другой "); } else { if ($_POST['password1']!=$_POST['password2']) print_r("Пароли не совпадают"); } else { $add(); } // использование функции CRUD_ADD } } ?> но $GLOBALS['log'] это давно устаревший отстой
я в php только неделю разбираюсь скинули тестовое задание которое нужно сдать, вот использую то, что знаю, как можно без $GLOBAL['log']?
в двух словах не объяснить.. что мешает именно в этом месте проверить? вместо сверки с переменной - сделать запрос и посмотреть результат?
сделал так PHP: $validlogin(); if ($GLOBALS['log']== 1) { print_r("Этот логин уже занят придумайте другой "); } elseif($_POST['password1']!=$_POST['password2']) { print_r("Пароли не совпадают"); } else { // использование функции CRUD_ADD $add(); } --- Добавлено --- Стараюсь хоть как-то придерживать ООП без повторения кода