PHP и с чем его едят....

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Не подскажите как правильно исключить с поля ввода данных русские символы? Для кодировки cp1251 использовал preg_match(), но в utf-8 это не работает:
PHP:
if( preg_match( "/[\|0-9А-Яа-яЁё\|`\|_\||\'|\<|\>|\[|\]|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\{\+]/", $login ) ) $stop .= $lang['login_error'];
[A-Za-z]* как-то так. Регулярка доставляет).
Гораздо проще запрещать всё, что не разрешено, тогда не приходится писать огромных регулярок.
 
Останнє редагування:

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Ошиблись, наоборот всё что разрешено проще перечислить...
Я это и написал.
"Все что разрешено проще перечислить" => т.е. указать все, что разрешено => все что не разрешено - запрещено => ?????? => PROFIT!

А регулярку я привел для всего английского алфавита. По-моему если есть требование сделать так, чтоб допустимыми были только \w латиницы, проще перечислить их, а не запрещать все языковые наборы, вроде бы это логичнее)
 

[fly]

Sweet orange
Подскажите в чем ошибка. Я не программист, поэтому не критикуйте:) Собственно сам вопрос: почему не получается авторизоваться? Есть два файла: login.php и users.dat.

Пример login.php
<h3>ВХОД НА САЙТ</h3>

<form action="index.php?event=login" method="post">
<br />Name: <input name="name" type="text">
<br />Password: <input name="password" type="password">
<br /><input name="submit" type="submit" value="Login">
</form>

<?php // ФОРМА АВТОРИЗАЦИИ
if ($_GET[event]=="login") {
$name = trim($_POST['name']);
$password = trim($_POST['password']);

if (isset($name) AND isset($password)) {
$data=file("users.dat");
for ($i=0; $i<count($data); $i++) {
$dat=explode("|", $data[$i]);
if ($name==$dat[0] && $password==$dat[3]) { echo "ВЫ АВТОРИЗОВАНЫ"; exit;}
else { echo "Вход невозможен. Проверте верно ли введены данные."; exit;}
}
}
}
?>
и соответственно сам users.dat:
<?die;?>
Стас|Рудыка|fly1943@mail.ru|123456
Сергей|Зайцев|zayaz_85@mail.ru|0665475896
 
Останнє редагування:

[fly]

Sweet orange
Dre.hz, я же написал, я не программист. Читать эти мануалы мне бесполезно. Если есть решение этой проблемы с описанием моей ошибки, то буду рад прочесть, а разные ссылки, не стоит.
 

Dre.hz

Active Member
[fly], Я не вам писал, я Firewall'у. Там, где я процитировал, он не прав, так что тот кусочек текста проигнорируйте.
 

[fly]

Sweet orange
А, теперь понятно, но проблема осталось не решенной. Неужели никто не подскажет?
 

Firewall

Мой повелитель
Dre.hz, спс учтемс

[fly], для вас как-то так
<h3>ВХОД НА САЙТ</h3>

<form action="login.php?event=login" method="post">
<br />Name: <input name="name" type="text">
<br />Password: <input name="password" type="password">
<br /><input name="submit" type="submit" value="Login">
</form>

<?php
if ($_GET[event]=="login") {
$name = trim($_POST['name']);
$password = trim($_POST['password']);

if (isset($name) AND isset($password)) {

$data=file("users.dat");

for ($i=0; $i<count($data); $i++) {

$dat=explode("|", $data[$i]);

if ($name==trim($dat[0]) && $password==trim($dat[3])) { echo "ВЫ АВТОРИЗОВАНЫ <br/>";}
//else { echo "Вход невозможен. Проверте верно ли введены данные. <br/>"; }

}

}
}
?>
 

[fly]

Sweet orange
Как-то не так. Почему закомментировали else? Мне вот как бы надо, чтобы она выдавала значение, в случае не верного введения данных. Как это можно исправить? И почему когда я РАСкомментирую, то скрипт снова не пропускает. В чем дело? Да и вообще, почему эта конструкция не работает?
 

[fly]

Sweet orange
В общем если кому интересно, то все срослось. Пришлось при регистрации записывать данные в другом порядке. на первое место ставить имя, а на второе пароль, а дальше все остальное. Тогда в login.php меняется с $dat[3] на $dat[1] и можно смело раскомментировать оператор else. Всем спасибо за внимание:)
 
Зверху