Ⅰ php 如果不对 POST 或者 GET 请求做过滤处理就会被注入吗
是的,如果不做过滤肯定很容易就被注入的
Ⅱ 请问PHP怎么过滤GET或者POST的参数防止js注入,或者一些html注入请请提供代码参考谢谢!
string mysql_real_escape_string ( string unescaped_string [, resource link_identifier])
本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。
注: mysql_real_escape_string() 并不转义 % 和 _。
例子 1. mysql_real_escape_string() 例子
<?php
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>
以上例子将产生如下输出:
Escaped string: Zak\'s and Derick\'s Laptop
Ⅲ PHP $_GET方法传过来参数过滤问题求高手指导一二!!
php有个防止sql注入的函数addslashes(),这样就会把你搜索框里传过来的单引号双引号转义掉,还有要防止跨站脚本攻击xxs,用函数htmlspecialchars (),详细可看php手册
Ⅳ 跪求PHP的__get方法的参数
__get的作用更多的会出现在比较抽象的需求中:当对象属性不存在时,以属性名为参数调用__get。
举例来说:
<?
class a{
function __get($name){
if($name == 'db') {
$this->db = mysql_connect('localhost', 'root', 'root');
mysql_select_db('test');
} else if($name == 'other1') {
// do something
} else if($name == 'other2') {
// do something
}
return $this->$name;
}
function get_data() {
// $this->db 这一句相当于调用$this->__get('db')
$query = mysql_query("select * from a", $this->db);
while($row = mysql_fetch_assoc($query)) {
print_r($row);
}
}
}
$b = new a();
$b->get_data();
?>
--------------------------
返回的值就相当于是调用$this->__get('db'); 的返回值,在上面的例子里面就是一个mysql连接句柄。
--------------------------
上面的例子的作用:
仅当需要连接mysql的时候才会产生连接,如果仅仅是静态页面,就不需要建立连接来浪费宝贵的mysql连接数。类似的,在传统面向过程的结构里,“必须”初始化的东西,都可以放在__get里面去“按需初始化”。比如smarty类,分页类 等等等等。
在MVC架构里面也经常会用到类似于:
// 调用$this->__get('somemodel')
$this->somemodel->dosomething1();
//因为在__get里面已经给'somemodel'赋值,所以此处不重复调用__get
$this->somemodel->dosomething2();
Ⅳ PHP如何过滤POST、GET、COOKIE
首先命药明白POST,GRT,COOKIE,其实它是一个数组。
你可以print_r($_POST)就明白了
所以你一可以写一个方法,
public function a ($_POST){
foreach($_POST as $val) {
/将所有的值过滤掉后赋予一个新的数组
}
return $arr;
}
Ⅵ php中,通过$_GET 和 $_POST 取得的数据 安不安全 需要什么过滤函数处理吗
引号过滤有magic_quotes_gpc(服务器配置)
函数addslashes() htmlspecialchars(,ENT_QUOTE);
注意服务器上是否已经开启magic_quotes_gpc
(php>=5.3 已经废弃了它) 如果已经开启,再进行转义会导致双层转义。 另外addslashes() addcslashes() 都不能对数组进行处理,需要写一个递归实现。
你可以使用函数get_magic_quotes_gpc()来检测它是否已经开启
不建议使用addslashes使用addslashes可能会因为数据库编码的问题使得单引号未被转义了解详情可访问:http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string
Ⅶ 关于php如何传递数据
看了你的问题,我有点晕,本来是很困的,现在更困了。
我觉得,你这不就是一个正常的网站吗?也没什么值需要传呐?
你的登录页面向admin.php传值这个简单,直接用form表单就可以搞定了;
验证的页面完全可以和dir.php合并嘛,登录的话都是用session或cookie完成的,反正你的每个页面都必须要做这一步,直接合并就OK
另外你的dir.php就是一个正常了网页了,也就是用户需要浏览的页面对吧?那你点了对应的链接就链接不同的页面,这个不是太简单了吗?不同的页面去取不同的数据表,神马大型的网站都是这么干的呀!
另外,要和你说的是,安全不安全不是列出了什么,重要的是你列出来的东西不要包含你的字段名,这才是影响安全的重要因素,你可以通过PHP把它转换呐,PHP不就是做这个转换的吗?PHP的功能是神马?就是做这个的呀。
另外,如果你是动态页面,使用链接跳转页面,就必须用?+信息的方式,当然,我说的是初学,如果你学得深入了,可以用伪静态,更可以用纯静态,这个先不说,先把页面间通过get传值弄通,你就学会PHP了,也就是说,你正式进入了PHP的大门。
不行了,熬不住了,睡觉去了.............
Ⅷ php 如何隐藏GET的传送值
post传值。或者get加密,自己解密。可网络搜下 discuz的加密解密程序
Ⅸ PHP怎么过滤GET或者POST的参数怎么样才能保证代码不被注入
if (!get_magic_quotes_gpc())//如不美观没有开启的话{ /****需要对这几个数组,遍历,注重数组多维的情形,addslashes($str)就可以 $_GET $_POST $_COOKIE $_REQUEST ****/}
Ⅹ PHP判断是否有Get参数的方法
可采用如下方式判断
.代码如下:
if(is_array($_GET)&&count($_GET)>0)//判断是否有Get参数
{
if(isset($_GET["para"]))//判断所需要的参数是否存在,isset用来检测变量是否设置,返回trueorfalse
{
$para=$_GET["para"];//存在
}
}