2012-02-20 6 views
0

если я ввод текста, где посетитель должен ввести собственный URLя хочу, чтобы запретить определенные PREfix

<form name="frm" method="post" action="addlink.php"> 
url : <input type="text" name="url" id="url"> 
<button type="submit" class="options green">add</button> 
</form> 

и addlink.php код, как этот

$url = $_POST['url']; 
$sql = "INSERT INTO $table_urls (url) VALUES ('$url')"; 
mysql_query($sql, $conn) or die(mysql_error()); 

я хочу запретить, например, WWW. something.com/anything, поэтому, если посетитель вводит какой-либо URL-адрес, www.something.com/else - www.something.com/elsething ..etc

он обнаруживает something.com и дает ошибку, например

<?PHP if(XXXXXXXX){ 
echo "somthing.com is not allowed"; 
}else{ 
$sql = "INSERT INTO $table_urls (url) VALUES ('$url')"; 
mysql_query($sql, $conn) or die(mysql_error()); 
} 

если что! я хочу сказать, если у $url есть что-то.com, то дайте не разрешайте!

+6

** ПРЕДУПРЕЖДЕНИЕ ** Ваш код широко открыт для атак SQL Injection. Если вы настаиваете на использовании 'mysql_query', вам, по крайней мере, нужно будет использовать [' mysql_real_escape_string'] (http://php.net/manual/en/function.mysql-real-escape-string.php), чтобы избежать ваших значений до используя их в запросах. Вам будет еще лучше обновить себя до ['PDO'] (http://us2.php.net/manual/en/class.pdo.php) и использовать подготовленные операторы вместо' mysql * '' расширения. – rdlowrey

+0

@rdlowrey спасибо, но это пример для простоты, но в реальном примере я уверен, что буду использовать mysql_real_escape_string. –

+2

После использования более старых функций 'mysql' за последнее десятилетие ... Я второй вариант @rdlowrey' PDO'. – summea

ответ

1

Вы можете использовать функцию РНР, preg_match() найти точное совпадение:

if (preg_match('/something.com/i', $url) > 0) { 
    // Your error message here 
} 

Для получения дополнительной информации об использовании этой функции, вы можете проверить здесь: http://php.net/manual/en/function.preg-match.php

+0

отлично работает и благодарит за идею, я прочитаю об этом –

1

Я хотел то же самое. Я сделал это в VB, но здесь, если это поможет. Extract words from a string and verify whether or not they exist in a database in VB

Просто разделите слова в пробелах и проверьте, существует ли значение в вашей базе данных. Если это так, замените на **** или что угодно, а при фильтрации слов используйте StringBuilder, который добавит каждое слово, только если слово содержит запрещенное значение, оно добавит ****, и ваша исходная строка будет возвращена.

0
$parsed_url=parse_url($url);  
if (strtolower($parsed_url['host']) == 'www.something.com' || strtolower($parsed_url['host']) == 'something.com') 
{ 
    $error=true; 
} 
+0

спасибо, но как насчет того, было ли это www.something.com/anything/something, мне нужен какой-либо URL-адрес, который начинался с something.com, не допускается. –

+0

Я отредактировал свой ответ и был бы признателен, если бы эти downvotes были возвращены. Благодарю. :-) – TecBrat

Смежные вопросы