1) Ввод даты. Та же проблема, что и у всех. Народ либо использует строку "введи по шаблону", что не правильно и ставит пользователя в тупик, оставляя маневр для ошибки, либо HTML5-компонент даты, который до сих пор не стандартизирован, имеет в каждом браузере свой внешний вид и логику взаимодействия, предоставляет разный пользовательский опыт, а, самое главное, на некоторых браузерах может вообще не поддерживаться и тупо отображаться как строка для ввода текста. Дата делается тремя выпадающими списками. День, месяц, год. Проверено. Работает. 2) Хэширование и шифрование - разные термины. Шифрование обратимо. Хэширование - нет. 3) PHP: $login = htmlspecialchars(trim($_POST['login'])); $pass = htmlspecialchars($_POST['pass']); Преобразование данных желательно делать перед выводом, но, в случае с логином, допустимо и при сохранении. А вот преобразование в пароле не нужно вовсе, он все равно будет захеширован, но преобразованием ты вносишь в него изменения. Таким образом, правильных паролей становится уже два. Это плохо. 4) Проверка на существование логина тоже может быть реализована проще. Просто сделай логин уникальным индексом и сразу пытайся создать учетную запись. Бд вернула успех операции? Окей. Бж вернула ошибку нарушения уникальности индекса? Упс, логин занят. При этом не будет лишних запросов. Я об этом тоже многократно писал. 5) PHP: $insert = $db->query("INSERT INTO `user` (`login`,`pass`,`bdate`,`schet`) VALUES ('$login','$pass','$bdate','0')"); Окей. Логин ты экранировал. Пароль ты захешировал. Ну а bdate-то почему оставил в чистом виде из $_POST? Думаешь, если у тебя на странице компонент, позволяющий ввести только дату, то подсунуть тебе левые данные не получится? Однажды ты продублируешь этот код, но без "дурацких фильтров на 150-летний возраст", просто забыв о них, и влетишь по-полной. Связность кода должна быть минимальной. 6) PHP: header("Location: /index.php"); Всегда после перенаправлений сразу ставь die или exit. Если ты решил сделать перенаправление, то остальной код уже не важен. Важно как можно быстрее отдать браузеру ответ с этим заголовком. Это ведь перенаправление, все, что будет сделано потом, будет просто отброшено. 7) На 100 и 135 строке словилось дежавю. Почему бы не вынести повторяющийся код в функцию? 8) 143 строка: PHP: header("Location: /index.php"); ifAuth($login, $db); А потом смотрим в функцию ifAuth, 19 строка: PHP: header("Location: /index.php"); Во-первых, ты вызываешь какую-то логику после перенаправления, это не правильно. Перенаправление должно быть точкой остановки. После него только die или exit. Вся логика должна быть вызвана до него. Так принято. Так сразу понятно, что к чему. Во-вторых, у тебя перенаправление выбрасывается в функции, вызываемой после перенаправления. Складывается впечатление, что ты не совсем понимаешь, что это и как работает, и просто пишешь везде на всякий случай. Так делать не надо. Надо точно понимать, что у тебя творится. Если встречается неоднозначность логики, значит нужен рефакторинг, чтобы разделить логические процессы. На самом деле, все обработки $_POST можно вынести в одну секуию if(!empty($_POST)){}, внутри которой все сортировать и дергать нужные функции, а потом радостно все прихлопывать одним-единственным перенаправлением, потому как сейчас код несколько хаотичен. 9) Названия. Имя функции "ifAuth" ничего нам о ней не говорит. Самодокументированный код должен быть очевиднее. Во-первых, функция - это действие. Названия функций должны быть глаголами или отглагольными словами. Во-вторых они должны описывать ее суть, а не условия, при которых она вызывается. Название типа "check_counter" уже пошло бы лучше. Хотя, в твоем случае функцию вообще следует разделить на функции "show_counter" и "increment_counter". Заметь, я просто написал названия, но уже понятно, что они должны делать. Ну и да, в php принят snake_case, а не camelCase. Даже если второй тебе привычнее. Что поделать. Я вот тоже в php пишу снейком, а в JS кемелом. Жизнь боль.
Ну snake_case насколько я видел по старой документации Zend'a использовался раньше пока неймспейсы не ввели.Сейчас же если брать те же самые фреймворки c PSR4 autoload я слабо представляю использование snake_case.
вообще не читал про стандартизацию =) сейчас вот читаю... смутил пункт в psr-2: "Для оформления отступов ДОЛЖНЫ использоваться четыре пробела (но не знак табуляции)." А чем это лучше таба?
Оно конечно круто, мол, у нас взрослый язык, давайте писать кемлом как в шарпах, яве или тех же плюсах, даже JS верблюдный, а мы что не люди? Только сам php при этом вдоль и поперек snake_case-овый. Ну ок, не на 100%. Процентов 70 в нем змеей написано, а еще 30% - тупосклеиваниемсловбезверблюда. В сочетании с PSR получаем стилевой венигрет. По мне, лучше один стиль, родной, насколько это возможно, для языка, чем режущая глаза мешанина. Это мое ИМХО, разумеется. --- Добавлено --- Пробел имеет ширину в 1 символ. Таб же трактуется каждым редактором так, как ему угодно. Плюс, при навигации стрелочками начинаются безумные скачки. А еще есть холивар, мол, нажать один раз кнопку проще, чем четыре. Однако, в современных хороших редакторах кода и IDE такой проблемы нет, потому что: 1) В настройках обязательно есть пунктик о том, как интерпретировать табы. 2) В зависимости от этой настройки они автоматом конвертятся в то, что нужно. Я вот в phpStorm для выставления отступов пользуюсь сочетанием alt+F8, которое автоматом выравнивает код жмакаю TAB. Но при этом шторм сдвигает строку на 4 пробела. SHIFT+TAB сдвигает строку на 4 пробела в обратную сторону. И любой код с табами будет сконвертирован в код с пробелами. И волки сыты и овцы целы. И все, пользуйся на здоровье табами, но не имей с того головняк Ессно, это все в настройках можно подкручивать на свой вкус, если есть необходимость.
В нетбинсе то же самое. Хотя после того же npp непривычно, т.к. там таб - это таб. И он не преобразуется в 4 пробела.
@alexblack а ок. Просто давно не пользовал нпп. Было бы забавно такую простую и полезную опцию убрать из такого классного редактора.
Да кому оно надо, убирать это. Это даже в Brackets есть. А брекеты - это просто хипстерский Notepad++, не более.
Но тем не менее у тебя штормы по дефолту конвертируют табы в пробелы. На самом деле, в таком разрезе вообще пофигу.
и господь их храни! потому, что я юзаю два пробела, а не четыре. И если у меня в исходнике табы, то я его вижу так, как я люблю - с двумя пробелмаи, и ты видишь его так, как ты любишь - с четырьмя! Да хоть с десятью даже! И все довольны. Более того, скобка после функции/класса/метода и вот вся эта хрень - всё это должно рисоваться не меняя исходник. Рисоваться, как HTML - так, как тебе нравится больше. А не переформатировать к чертям исходник каждый раз, чтобы показать скобочку сообразно локальным настройкам.
Топик вроде про "быстро освоить" а обсуждаются дебри какие-то, даты, до табов дело дошло (табы рулят, холивар понеслася) Чтоб просто освоить РНР надо чётко ставить перед собой задачу. Если есть задача "сделать регистрацию юзера" достаточно поставить эту задачу более чётко "нужен скрипт добавляющий в базу юзеров одну запись" когда задачи будут ставиться максимально чётко, тогда и освоится РНР... (Куда сложнее понять нужна ли регистрация юзеров, её пихают уже везде где не лень, как дань моде, вот отказаться от оной, это искусство...)
ну т.е. потрахаться три вечера это уже не быстро? Это типа чета затянуто как-то? Надо чтобы на ютубчик щка, видосик пщю - пущь-пущь-пущь - теперь ты пхп кодер!
Если бы три вечера по теме, это было бы быстро, а посторонние темы типа табов и пробелов, это топтание на месте...
чья бы 6лядь корова мычала я помню как ты в залупу полез из-за того что у меня блок открывается следующей строкой а тебе видишь ли { на этой же нужен. Теперь тебе еще и табы вместо пробелов подавай. Ты только и делаешь, что требуешь, эгоист паршивый Тебе похоже принципиально именно бороться с системой
ну по внешнему виду несоответствие пунктам 1 (должна быть в центре экрана), 4 (почему только с 1920 года?), 5 (вместо числа 0 пишет вы зареганы), и напиши код всего этого тут --- Добавлено --- и при входе над +1 и выходом пустота, пока не начнешь кликать по +1 =) --- Добавлено --- и кстати. помоему все должно быть в одной странице (index.php) или я ошибаюсь?))
подъебал короче я считаю, что IDE должна к исходнику относиться как браузер к коду html. и показывать его так как мне нравится, а форматирование не трогать, пока я конкретно курсор между скобками не вкрячу и по энтеру не жмякну. Такое моё мнение.
Не знаю, убрали ли, но, я так понял, что правильно всё таки 4 пробела? Так что меня и так устраивает.
Уважаемые модераторы ведь вы модераторы и понимаете что это не та тема что бы тут обсуждать табуляцию!