Всё обо всём

Помощь, ПХП (PHP)

385 234
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
Здравствуйте дорогие форумчане. :smile:

Дело такого рода, написал код (рабочий),
хотелось бы услышать, пускай это будет критика, так-как уже мы все привыкли к ней здесь, но чтобы была с разъяснениями почему и как должно быть!!!

Код проверяет и дальше после кода INSERT UPDATE и SELECT в базу

 Показать / Скрыть текст$skype = trim($_POST['skype']);
$skype = iconv('UTF-8','windows-1251',$
skype);
$skype = htmlspecialchars($skype);
$skype = mysql_escape_string($skype);
if (preg_match("/[а-я]/i", $skype)){echo 'Логин Skype не может содержать кирилицу'; exit();}
if (empty($skype)){ $skype = '';}else{
if (strlen($skype) < 6){echo 'Длина логина должна составлять от 6 до 32 символов.'; exit();}
if (strlen($skype) > 32){echo 'Длина логина должна составлять от 6 до 32 символов.'; exit();}
}
$icq = intval( ( int ) $_POST['icq']);
if (!is_numeric($icq)) {echo 'Указан неверный номер ICQ'; exit();}
if (empty($icq)) $icq = '';

$podpis = trim($_POST['podpis']);
$podpis = iconv('UTF-8','windows-1251',$
podpis);
$podpis = htmlspecialchars($podpis);
$podpis = mysql_escape_string($podpis);
if (empty($podpis)) $podpis = '';
ПС: а главный вопрос безопасно ли так!
user avatar
Администратор
На сайте 15 лет
Сообщений : 276
Репутация : 120
9 лет назад
$icq = intval( ( int ) $_POST['icq']);
зачем два раза приводишь к целочисленому значению? Хватит чего то одного из этого!

mysql_escape_string($podpis);
а разве не лучше ли?
mysql_real_escape_string($podpis);
user avatar
Пользователь
На сайте 14 лет
Сообщений : 287
Репутация : 0
9 лет назад
.del
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
ra4ok14,
ПонялNikes,
Не критика а вопрос, подпись не проверяешь?
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад
MARIOS,
Nikes,
грамотеи, что один, что второй, разве в регулярках длина значения не указывается? а?
и зачем вам эли лишние строки:
case (strlen($skype) < 6)
case (strlen($skype) > 32)

$data = trim($data)
$data = iconv('UTF-8','windows-1251',$
data);
$data = htmlspecialchars($data);

а нельзя разве сделать $data = htmlspecialchars(trim($data));
????????

туда даже iconv можно запихнуть
не знаю зачем вы делаете лишние строки
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
Цитата: ByFlyграмотеи
:wink: Цитата: ByFlyразве в регулярках длина значения не указывается?
давай так ты мне регулярку а я тебе 50р., я регулярку не знаю :fellow:
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад
MARIOS, по рукам, ща, сек, накидаю быстро
user avatar
Пользователь
На сайте 13 лет
Сообщений : 1859
Репутация : 0
9 лет назад
Цитата: ByFlyа нельзя разве сделать $data = htmlspecialchars(trim($data));
можно
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад
Моя регулярка для использования логина
Правим немного под твой ник скайпа


if(!preg_match("|^[a-z0-9]{6,3
2}+$|i", $_POST['skype'])){
echo "Разрешено использовать только латинские буквы и цифры";
}
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
Цитата: ByFlyнакидаю быстро
ток накидай нормально, а то тут срачь розведётся! :wink:
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад
Только потом, если прошел POST skype и он содержит правильные символы, делаешь остальные функции типа trim, htmlspecialchars и тд и тп, сможешь это хоть?)
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
Цитата: ByFlyравим немного под твой ник скайпа
вот это не понял

у меня любой юзер вбивает скайп, причём мой скайп
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад
MARIOS, я тебе накинул регулярку и заменил длину, выставил от 6 до 32 символов, то есть проверка количества символов в самой регуляке
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
Цитата: ByFlyсможешь это хоть?)
сможешь, в первом посту кто писал?
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад
Цитата: MARIOSу меня любой юзер вбивает скайп, причём мой скайп
то есть?
допустим есть база с данными где содержится и логин скайпа, так?
ты хочешь еще сделать, чтобы если такой логин скайпа уже имелся в базе, то выдавало ошибку, так?
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
Цитата: ByFlyто есть?допустим есть база с данными где содержится и логин скайпа, так?ты хочешь еще сделать, чтобы если такой логин скайпа уже имелся в базе, то выдавало ошибку, так?
нет
есть база скайп юзер может записать, поменять или при отправки пустого поля удалить запись вернее записать пустую строку

Pretorian, gemiks
как регулярка?
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад
MARIOS, регулярку я тебе сделал, что еще нужно?)
sql запрос составить? или проверки сделать?
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
Цитата: ByFlyвыставил от 6 до 32 символов
ну а оповестить что его лог длинный или наоборот не нужно?

Цитата: ByFlyПравим немного под твой ник скайпа
здесь что ты имел в виду!?
user avatar
Пользователь
На сайте 15 лет
Сообщений : 858
Репутация : 0
9 лет назад
Замени строку эту:

echo "Разрешено использовать только латинские буквы и цифры";


На вот эту:

echo "Разрешено использовать только латинские буквы и цифры, минимальная длина 6 символов, максимальная длина 32 символа!";exit();


P.S. добавил exit() :wink:
user avatar
Пользователь
На сайте 13 лет
Сообщений : 251
Репутация : 0
9 лет назад
Цитата: ByFlyP.S. добавил exit()
:smile:
Автор темы
author avatar
MARIOS
Пользователь
На сайте 13 лет
Сообщений 251
Тем 24
Репутация 0
Теги темы
Автор не добавил тегов для этой темы
Ответить
Написал(а):