ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Фильтрация русского языка
  #1  
Старый 20.10.2009, 18:38
Аватар для OMG!!
OMG!!
Постоянный
Регистрация: 25.02.2008
Сообщений: 331
Провел на форуме:
1073404

Репутация: 189
По умолчанию Фильтрация русского языка

Добрый день.
Есть запрос

Код:
$db->query(sprintf("INSERT INTO code_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code)));
Поле ввода ( которое проверяет наличие файла + code_files содержимого в таблице ) корректно работает с английскими символами и траслитом. т.е. отвечает ДА на верные, и нет - когда файла нет и в таблице пусто. А вот когда пишу русскими буквами.. запрос, который выше - каким то образом пропускает это все в базу.
Вопрос. каким образом поле "code" залочить only английский язык? или как этот запрос может быть модифицировать, что бы он мог только английские буквы и цифры пропускать? спасибо!
 
Ответить с цитированием

  #2  
Старый 20.10.2009, 18:58
Аватар для Gray_Wolf
Gray_Wolf
Постоянный
Регистрация: 07.03.2009
Сообщений: 357
Провел на форуме:
1284900

Репутация: 399
По умолчанию

А не проще ли ещё перед запросом проверять введённые данные регуляркой?..
 
Ответить с цитированием

  #3  
Старый 20.10.2009, 19:07
Аватар для OMG!!
OMG!!
Постоянный
Регистрация: 25.02.2008
Сообщений: 331
Провел на форуме:
1073404

Репутация: 189
По умолчанию

Gray_Wolf,
Помоги, пожалуйста. мозг кипит уже..
Код:
			    $sms_form = false;
			    if ($member_id['user_group'] > 1 && $row['tarif'] > 0) { // Администраторы качают файл бесплатно
			    // Пришла форма?
				$sms_code = isset($_REQUEST['sms']) ? trim($_REQUEST['sms']) : '';
				$sms_error = '';
				if ($sms_code != '') {
				    $code_file = dirname(ENGINE_DIR).'/_codes/'.$row['tarif'].'/'.basename($sms_code);
				    if (file_exists($code_file)) {
					unlink($code_file);
					$db->query(sprintf("INSERT INTO sms_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code)));
				    } else {
					$sms_error = 'Неправильный код!';
				    }
				}
				$db->query(sprintf("SELECT * FROM sms_files WHERE userid = %d AND fileid = %d",$member_id['user_id'],$row['id']));
				$sms_file = $db->get_row();
				$db->free();
				if (empty ($sms_file)) {
				    $sms_form = true;
				}
			    }
			    if ($sms_form) {
				$sms_tarif = $sms_tarifs[$row['tarif']];
				$sms_form_html =<<<HTML
				    <span style="color: red; font-weight: bold;">$sms_error</span><br />
Что бы скачать данный файл отправьте смс сообщение <strong>{$sms_tarif['msg']}</strong> на номер <strong>{$sms_tarif['num']}</strong><br />
<form method="post">
    И введите полученный код, после чего нажмите отправить:<input type="text" name="sms" /><br />
    <input type="submit" value="Отправить" />
</form>
HTML;
				$tpl->set('{url}',$sms_form_html);
			    } else {
				$tpl->set ( '{url}', "<a class=\"download\" title=\"Скачать файл - " . $row ['title'] . "\" href=\"" . $config ['http_home_url'] . "index.php?do=" . $modulname . "&op=showfile&lid=" . $row ['id'] . "\"><b>Скачать</b></a>" . $email_link );
			    }
Куда вставить (!preg_match('/^([a-zA-Z0-9)$/', $sms) && ?
 
Ответить с цитированием

  #4  
Старый 20.10.2009, 20:14
Аватар для L I G A
L I G A
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме:
4532332

Репутация: 1196


Отправить сообщение для L I G A с помощью ICQ
По умолчанию

Код:
			    $sms_form = false;
			    if ($member_id['user_group'] > 1 && $row['tarif'] > 0) { // Администраторы качают файл бесплатно
			    // Пришла форма?
				$sms_code = isset($_REQUEST['sms']) ? trim($_REQUEST['sms']) : '';
				$sms_error = '';
		
if ($sms_code != '' AND  preg_match('/^([a-zA-Z0-9)$/', $sms_code)) {
				    $code_file = dirname(ENGINE_DIR).'/_codes/'.$row['tarif'].'/'.basename($sms_code);
				    if (file_exists($code_file)) {
					unlink($code_file);
					$db->query(sprintf("INSERT INTO sms_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code)));
				    } else {
					$sms_error = 'Неправильный код!';
				    }
				}
				$db->query(sprintf("SELECT * FROM sms_files WHERE userid = %d AND fileid = %d",$member_id['user_id'],$row['id']));
				$sms_file = $db->get_row();
				$db->free();
				if (empty ($sms_file)) {
				    $sms_form = true;
				}
			    }
			    if ($sms_form) {
				$sms_tarif = $sms_tarifs[$row['tarif']];
				$sms_form_html =<<<HTML
				    <span style="color: red; font-weight: bold;">$sms_error</span><br />
Что бы скачать данный файл отправьте смс сообщение <strong>{$sms_tarif['msg']}</strong> на номер <strong>{$sms_tarif['num']}</strong><br />
<form method="post">
    И введите полученный код, после чего нажмите отправить:<input type="text" name="sms" /><br />
    <input type="submit" value="Отправить" />
</form>
HTML;
				$tpl->set('{url}',$sms_form_html);
			    } else {
				$tpl->set ( '{url}', "<a class=\"download\" title=\"Скачать файл - " . $row ['title'] . "\" href=\"" . $config ['http_home_url'] . "index.php?do=" . $modulname . "&op=showfile&lid=" . $row ['id'] . "\"><b>Скачать</b></a>" . $email_link );
			    }
 
Ответить с цитированием

  #5  
Старый 20.10.2009, 20:26
Аватар для OMG!!
OMG!!
Постоянный
Регистрация: 25.02.2008
Сообщений: 331
Провел на форуме:
1073404

Репутация: 189
По умолчанию

L I G A,
Спасибо за попытку..
Warning: preg_match(): Compilation failed: missing terminating ] for character class at offset 14 in /home...../files_download.php on line 331

Это в шапке..
$sms_error = 'Неправильный код!';
сюда даже не доходит. + в таком варианте не работает вообще проверка :-(
 
Ответить с цитированием

  #6  
Старый 20.10.2009, 20:35
Аватар для L I G A
L I G A
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме:
4532332

Репутация: 1196


Отправить сообщение для L I G A с помощью ICQ
По умолчанию

Код:
	    $sms_form = false;
			    if ($member_id['user_group'] > 1 && $row['tarif'] > 0) { // Администраторы качают файл бесплатно
			    // Пришла форма?
				$sms_code = isset($_REQUEST['sms']) ? trim($_REQUEST['sms']) : '';
				$sms_error = '';
		
if (preg_match('/^([a-zA-Z0-9]+)$/', $sms_code)) {
				    $code_file = dirname(ENGINE_DIR).'/_codes/'.$row['tarif'].'/'.basename($sms_code);
				    if (file_exists($code_file)) {
					unlink($code_file);
					$db->query(sprintf("INSERT INTO sms_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code)));
				    } else {
					$sms_error = 'Неправильный код!';
				    }
				}
				$db->query(sprintf("SELECT * FROM sms_files WHERE userid = %d AND fileid = %d",$member_id['user_id'],$row['id']));
				$sms_file = $db->get_row();
				$db->free();
				if (empty ($sms_file)) {
				    $sms_form = true;
				}
			    }
			    if ($sms_form) {
				$sms_tarif = $sms_tarifs[$row['tarif']];
				$sms_form_html =<<<HTML
				    <span style="color: red; font-weight: bold;">$sms_error</span><br />
Что бы скачать данный файл отправьте смс сообщение <strong>{$sms_tarif['msg']}</strong> на номер <strong>{$sms_tarif['num']}</strong><br />
<form method="post">
    И введите полученный код, после чего нажмите отправить:<input type="text" name="sms" /><br />
    <input type="submit" value="Отправить" />
</form>
HTML;
				$tpl->set('{url}',$sms_form_html);
			    } else {
				$tpl->set ( '{url}', "<a class=\"download\" title=\"Скачать файл - " . $row ['title'] . "\" href=\"" . $config ['http_home_url'] . "index.php?do=" . $modulname . "&op=showfile&lid=" . $row ['id'] . "\"><b>Скачать</b></a>" . $email_link );
			    }
заменил $sms_code != '' на :
Код:
if (preg_match('/^([a-zA-Z0-9]+)$/', $sms_code)) {
т.к. если значение переменной $sms_code='' вернет false=>условие не выполнится.

Последний раз редактировалось L I G A; 20.10.2009 в 20:51..
 
Ответить с цитированием

  #7  
Старый 20.10.2009, 20:40
Аватар для OMG!!
OMG!!
Постоянный
Регистрация: 25.02.2008
Сообщений: 331
Провел на форуме:
1073404

Репутация: 189
По умолчанию

L I G A,
теперь не ругается в шапке.. но все равно до проверки и else не доходит ( а уж темболее до запроса)
MySQL вернула пустой результат (т.е. ноль строк). ( запрос занял 0.0001 сек. )
 
Ответить с цитированием

  #8  
Старый 20.10.2009, 20:42
Аватар для L I G A
L I G A
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме:
4532332

Репутация: 1196


Отправить сообщение для L I G A с помощью ICQ
По умолчанию

Цитата:
Сообщение от OMG!!  
L I G A,
теперь не ругается в шапке.. но все равно до проверки и else не доходит ( а уж темболее до запроса)
MySQL вернула пустой результат (т.е. ноль строк). ( запрос занял 0.0001 сек. )
какие символы передаешь ,a-zA-Z0-9 ?если нет, то так и должно быть,потому как условие не выполняется.
 
Ответить с цитированием

  #9  
Старый 20.10.2009, 20:45
Аватар для OMG!!
OMG!!
Постоянный
Регистрация: 25.02.2008
Сообщений: 331
Провел на форуме:
1073404

Репутация: 189
По умолчанию

L I G A,
смс_код вида md5 первые 6 символов ( так я реализовал рандом генерацию )
т.е. например cdd85c да .. и при ввода любого бреда .. или же русских символов.. скрипт перестал отвечать, что " $sms_error = 'Неправильный код!';" а раньше - отвечал естественно. ..
 
Ответить с цитированием

  #10  
Старый 20.10.2009, 20:50
Аватар для L I G A
L I G A
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме:
4532332

Репутация: 1196


Отправить сообщение для L I G A с помощью ICQ
По умолчанию

пробуй так:
Код:
   $sms_form = false;
			    if ($member_id['user_group'] > 1 && $row['tarif'] > 0) { // Администраторы качают файл бесплатно
			    // Пришла форма?
				$sms_code = isset($_REQUEST['sms']) ? trim($_REQUEST['sms']) : '';
				$sms_error = '';
		
if (preg_match('/^([a-zA-Z0-9]+)$/', $sms_code) and strlen($sms_code)=='6') {
				    $code_file = dirname(ENGINE_DIR).'/_codes/'.$row['tarif'].'/'.basename($sms_code);
				    if (file_exists($code_file)) {
					unlink($code_file);
					$db->query(sprintf("INSERT INTO sms_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code)));
				    } else {
					$sms_error = 'Неправильный код!';
				    }
				}
				$db->query(sprintf("SELECT * FROM sms_files WHERE userid = %d AND fileid = %d",$member_id['user_id'],$row['id']));
				$sms_file = $db->get_row();
				$db->free();
				if (empty ($sms_file)) {
				    $sms_form = true;
				}
			    }
			    if ($sms_form) {
				$sms_tarif = $sms_tarifs[$row['tarif']];
				$sms_form_html =<<<HTML
				    <span style="color: red; font-weight: bold;">$sms_error</span><br />
Что бы скачать данный файл отправьте смс сообщение <strong>{$sms_tarif['msg']}</strong> на номер <strong>{$sms_tarif['num']}</strong><br />
<form method="post">
    И введите полученный код, после чего нажмите отправить:<input type="text" name="sms" /><br />
    <input type="submit" value="Отправить" />
</form>
HTML;
				$tpl->set('{url}',$sms_form_html);
			    } else {
				$tpl->set ( '{url}', "<a class=\"download\" title=\"Скачать файл - " . $row ['title'] . "\" href=\"" . $config ['http_home_url'] . "index.php?do=" . $modulname . "&op=showfile&lid=" . $row ['id'] . "\"><b>Скачать</b></a>" . $email_link );
			    }
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Perl 5.11.0: новая версия языка программирования DeMoN_2009 Мировые новости 0 05.10.2009 22:57
Карта языка С++ Fata1ex С/С++, C#, Delphi, .NET, Asm 5 04.06.2009 18:51
Генпрокуратура проверит список "врагов русского народа" †Romi4† Мировые новости 0 26.10.2006 23:40



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ