Программирование > PHP
Авторизация
Diesel:
Rodent создавай новые топики для новых вопросов
Меняздесьдавнонет:
--- Цитировать ---Neter:
я знаю о твоём мнении насчёт этих собак
--- Конец цитаты ---
Ничего ты не знаешь!
Ни-Че-Го!
Ты сам-то почитай свои оправдания!
Вчера я был слишком уставший, чтобы заниматься разжевыванием азов.
Делаю это сейчас.
Вот смотри, я тебя, неуча, сейчас буду тыкать носом.
Наглядно показывать, что имея наглость с малыми знаниями иметь свое собственное мнение, ты сам расставляешь себе грабли.
--- Цитировать ---@ Нужна для подавления ошибок . т.е. если человек не жмакнул кнопку
--- Конец цитаты ---
Твои слова?
А тебе известно о том, что переменная эта может быть не установлена, при том, что форма отправлена? Если просто нажать на ентер. Вот если бы у тебя не было собаки - ты бы этот момент увидел СРАЗУ! По нотайсу. Пришел бы на форум - а как это так - форма отправлена, а переменной нету. И тебе бы объяснили.
А собакой ты нотайс подавил. В переменных своих ты уверен. И ловил бы глюк хрен знает сколько времени.
воспитательная часть закончена. Переходим к практической.
Если надо проверить, есть такая переменная, или нет, то надо использовать функцию isset() и нотайсов не будет, и ясность во всем. Не выполняется условие? Значит, переменная не установлена. Копаем, почему. НО НЕ ЗАТЫКАЕМ ПРОГРАММЕ РОТ!
И не пишем программ, в которых ошибки являются их частью.
Хотя, по-моему, некоторые люди просто не в состоянии понять, что сообщения об ошибках сделаны ДЛЯ ПОМОЩИ, а не просто развлечение разработчиков, чтобы досадить несчастным программистам и их надо подавлять.
Если надо проверить, отправлена была форма, или нет, при условии, что форма одна на странице (что бывает в подавляющем большинстве случаев), достаточно проверить _SERVER[\'REQUEST_METHOD\']. Если форм много и все с одним экшеном, то нужно хидден поле, чтобы их отличить.
с $_POST["logon"] (вместо которого ты мне подсунул @$users) разобрались.
Далее.
@$_POST["user"]
Как мы уже проверили выше, фолрма пришла постом.
Значит, поля "юзер" и "пасс" в ней обязательно должны быть.
А вдруг их нету???
А если их нету, то это форс-мажорная ситуация! Это или хакер лезет, или ошибка какая-то. Так программисту НАОБОРОТ!!!! НАДО. ОБ. ЭТОМ. ЗНАТЬ!!!
Что форма передана. а переменные почему-то - нет.
Ну я совершенно не представляю, как можно быть настолько страусом.
Ты для заказчика что ли пишешь? Лишь бы скинуть? Ну так отключи сообщения об ошибках ВООБЩЕ ВСЕ. И дело с концом.
А если ты нормальный программист, если тебя волнует работоспособность программы, то ты должен
1. написать ее так, чтобы она в штатном режиме никаких ошибок не выдавала. Чтобы ошибки не были ее частью.
2. ТЩАТЕЛЬНО изучать все сообщения об ошибках, буде таковые появятся. Иисправлять.
ПРИЧИНУ исправлять, бестолочь! а не сообщение. Болезнь лечить, а не симптом!
3. Скрывать сообщения об ошибках от юзера - они ему не нужны.
display_errors=off
ПОКАЗЫВАТЬ сообщения программисту
log_errors=on
Дальше.
Этот твой @$users
Вижу - исправил.
Опять же - за что ты не любишь примитивную функцию isset?
она гораздо короче, чем твой аррай кей екзистс и удобнее.
Тебе кажется, что обе эти функции все равно лишние?
Ну так учти, что в массиве никто логины с паролями не хранит, и весь этот пример притянут за уши.
то есть, проверять существование ключа одновременно со сравнением значения требуется на самом деле достаточно редко.
В нормальном же применении массивов попытка обратиться к несуществующему индексу - ОШИБКА! Важная ошибка, о которой должен знать программист.
О которой он будет знать, если не затыкает своей программе рот.
Меняздесьдавнонет:
Rodent
Я тебе отвечу.
Однако предупреждаю - если начнутся стоны или обидки, то тема будет немедленно закрыта.
Я не обсуждаю здесь вопросы твоей гениальности ли убогости. Такое мнение может возникнуть ТОЛКО если
1. ты считаешь себя гением, а свое решение гениальным
2. твое рещение критикуется.
При адекватной же самооценке факт критики воспринимается не как попытка наехать, а как попытка помочь.
Сейчас ты наткнулся на первые грабли системы "запихнуть весь сайт в один файл". Оставив в стороне эстетическую сторону вопроса, я лишь скажу, что граблей таких будет много.
К примеру:
Вот на этом сайте выводится в заголовке окна (в теге title) название темы. А в твоем это сделать затруднительно.
Заплаток можно будет наставить много. Из-за них твой файл индекс, который не делает НИЧЕГО кроме того, что показывает другие файлы юзеру, будет ВСЕ ВРЕМЯ разрастаться.
Я считаю, что лучше обойтись без него вовсе. Без лишнего кода, без лишнего файла, без лишнего параметра в адресе.
Возьми, да раздели свой design.php на две части - верх и низ.
И подключай в каждом скрипте в нужных местах.
Таким образом разом снимутся все проблемы. Сохранится легкость смены дизайна. И скрипты приобретут гибкость.
Меняздесьдавнонет:
--- Цитировать ---$userName = trim(@$_POST["user"]);
$userPass = trim(@$_POST["pass"]);
if ($userName=="") { $error[]="Не заполнено поле \\"Имя\\""; }
if ($userPass=="") { $error[]="Не заполнено поле \\"Пароль\\""; }
--- Конец цитаты ---
заменяем на
if (!$userName=trim($_POST["user"])) $error[]=\'Не заполнено поле "Имя"\';
if (!$userPass=trim($_POST["pass"])) $error[]=\'Не заполнено поле "Пароль"\';
получается гораздо читабельнее и элегантнее.
Далее.
session_start(); имеет смысл делать только в случае удачной авторизации. Какой смысл стартовать сессию хакеру, к примеру, подбирающему проль?
--- Цитировать ---
$_SESSION[\'username\'] = "";
$_SESSION[\'userpass\'] = "";
--- Конец цитаты ---
это лишнее.
--- Цитировать ---$_SESSION[\'userpass\'] = $userPass;
--- Конец цитаты ---
А это - тем более!
Меняздесьдавнонет:
самое обидное, что учишь вас, учишь.
пишнешь километры текста. и в фак.
и каждому персонально.
А толку - ноль.
Или "я знаю твое мнение, но сделаю по-своему" или вообще "чего со своими замечаниями лезешь".
Тут еще один кадр был.
Задает идиотский вопрос, типа, "как получить 2х2=5" и в ответ на замечание выдающий сакраментальное "не знаешь, как сделать - молчи лучше!".
Эх. Прав Ксандер. Вырождаются форумы...
Навигация
Перейти к полной версии