PHP 스크립트가 아약스로 보낸 잘못된 URL을 게시하고 있습니다. URL을 필터링하고 mysql에 삽입을 취소하려고하면 작동하지 않습니다. 내가하고 싶은 것은 그것이 링크라면 $ link 변수를 확인하는 것이다. 그렇지 않다면, mysql에 데이터를 게시하지 마라. 내가 뭘 잘못하고 그것을 고치는 지 알 수 있습니까? 주셔서 감사합니다 :) 것은 여기에 내 코드mysql에 삽입하기 전에 데이터 (url 변수)를 검사하십시오.
$con = mysql_connect("localhost","root","");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("database", $con);
$link = $_POST['new'];
$name = $_POST['name'];
$size = $_POST['size'];
$cat = $_POST['cat'];
// PHP 5.3.5-1ubuntu7.2
$link = mysql_real_escape_string($link);
$name = mysql_real_escape_string($name);
$size = mysql_real_escape_string($size);
$cat = mysql_real_escape_string($cat);
if (filter_var($link, FILTER_VALIDATE_URL)) {} else {
echo "URL is NOT valid";
mysql_close($con);
exit();
}
$check = mysql_query("SELECT link FROM links WHERE link = '{$link}';");
if (mysql_num_rows($check) == 0) {
// insert
$sql="INSERT INTO links (link, name, size, category) VALUES ('$link','$name','$size','$cat')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added. Redirecting!";
mysql_close($con);
}
[** 새 코드 **] (http://bit.ly/phpmsql)에는 mysql_ * 함수를 사용하지 마십시오. 그들은 더 이상 유지되지 않으며 [공식적으로 사용되지 않습니다] (http://j.mp/XqV7Lp). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. – Kermit
나는 같은 코멘트를 게시하려고했다 :) –