【发布时间】:2012-09-24 23:53:49
【问题描述】:
我对正确验证我的 URL 感到非常困惑。我已经尝试了几个选项,但我无法做到正确。有人可以查看我的代码并告诉我我做错了什么吗?
$url=filter_input(INPUT_GET, 'url', FILTER_VALIDATE_URL);
if (!$url) {
echo The url address is not valid
}
if(strpos($url,'http://')===false)
$url='http://'.$url;
$query="INSERT INTO `aa_aa`.`article` VALUES ('', '".$url."', '".$_POST['description']."', '".$_POST['type']."',NOW());";
$result=mysql_query($query);
if(!$result)
// echo 'Error While Inserting Article!';
echo $query;
else
header('Location: http://aa.aa');
编辑 对不起,埃里克在这里。 @Brad 我的朋友帮我编写了所有脚本,所以我不太了解我使用它的风险。
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database:
--
-- --------------------------------------------------------
-- Table structure for table `article`
--
CREATE TABLE IF NOT EXISTS `article` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(100) NOT NULL,
`description` text NOT NULL,
`type` varchar(40) NOT NULL,
`title` varchar(80) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=137 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
【问题讨论】:
-
您对 SQL 注入完全开放。如果您还没有被黑客入侵,那么您将会被黑客入侵。学习使用 PDO 或类似的准备好的查询来完全避免这个问题。
-
你能提供你的表格布局/创建脚本吗?
-
@TylinJumfit .. 不是 html,我想知道您的 mysql 表是什么样的...请编辑您的问题,而不是在 cmets 中添加其他信息。
-
好吧,Erik 抱歉。
标签: php forms validation url