php display_errors与log_errors

 更新时间:2016年11月25日 15:06  点击:1964
文章总结了php display_errors与log_errors 用法介绍,有需要了解的同学可参考一下本文章。

display_errors

错误回显,一般常用语开发模式,但是很多应用在正式环境中也忘记了关闭此选项。错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利。推荐关闭此选项。

display_errors = On

开启状态下,若出现错误,则报错,出现错误提示

dispaly_errors = Off

关闭状态下,若出现错误,则提示:服务器错误。但是不会出现错误提示

在程序上可以这样定义开关

//ini_set("display_errors","On"); //显示所有错误信息*/
 ini_set("display_errors","Off"); //屏蔽所有错误信息

这里要说明的是,通常服务器配置文件中,是屏蔽notice错误,只显示error错误,如果是这样的话,你打开错误显示,也不会显示notice错误

log_errors

在正式环境下用这个就行了,把错误信息记录在日志里。正好可以关闭错误回显。


设置是否将脚本运行的错误信息记录到服务器错误日志或者error_log之中。注意,这是与服务器相关的特定配置项。

Note:

在生产系统中,强烈建议你使用错误日志记录web站点上显示的错误信息。


log_errors_max_len integer
设置 log_errors 的最大字节数. 在 error_log 会添加有关错误源的信息。默认值为1024,如果设置为0表示不限长度。该长度设置对记录的错误,显示的错误,以及 $php_errormsg都会有限制作用。

当使用 integer 时, 其值以字节来衡量。还可以使用在FAQ中描述的速记符。

下面我总结了关于在php开发中一些字符替换方法,包括不用正则直接替换或使用正则替换字符以及利用php自带函数进行替换。

比如有一个字符串:$a=’hello world hello pig hello cat hello dog hello small boy’;
然后想将第3次出现的hello 改变成为good-bye,比如:
‘hello world hello pig good-bye cat hello dog hello small boy’;
这样的情况,我一时半会没找到PHP的内置函数,而且在要求不能使用正则表达式的情况下,就编写了这个简易的小函数,如果大家有好的内置函数推荐,欢迎留言:)

 代码如下 复制代码

<?php 
/* 
 * $text是输入的文本; 
 * $word是原来的字符串; 
 * $cword是需要替换成为的字符串; 
 * $pos是指$word在$text中第N次出现的位置,从1开始算起 
 *
 */
function changeNstr($text,$word,$cword,$pos=1){ 
 $text_array=explode($word,$text); 
 $num=count($text_array)-1; 
 if($pos>$num){ 
  return "the number is too big!or can not find the $word"; 
 } 
 $result_str=''; 
 for($i=0;$i<=$num;$i++){ 
  if($i==$pos-1){ 
   $result_str.=$text_array[$i].$cword; 
  }else{ 
   $result_str.=$text_array[$i].$word;
  } 
 } 
 return rtrim($result_str,$word); 

$text='hello world hello pig hello cat hello dog hello small boy'; 
$word='hello'; 
$cword='good-bye'; 
echo changeNstr($text,$word,$cword,3); 
//输出:hello world hello pig good-bye cat hello dog hello small boy
?> 

正则会更方法


如果是utf-8编码的话

 代码如下 复制代码

<?php
$regex = "/(,|,||||)/i";
$test = "河北,石家庄,北京,上海|天津|||重庆|保定,,,河南, ";
$result = preg_replace($regex," ",$test);
print_r($result);
?>


结果
河北 石家庄 北京 上海 天津 重庆 保定 河南

php函数替换

PHP常用正则匹配函数间的区别,主要有str_replace、str_ireplace、substr_replace、preg_replace、preg_match、preg_match_all、preg_quote、preg_split、ereg_replace、eregi_replace、preg_replace、str_split,当然其中有几个不能使用正则表达式,但因为跟相关正则函数关系暧昧所以都放到一起比较一下

  支持正则 特点 备注
str_replace X 字符串替换函数,大小写敏感  
str_ireplace X 字符串替换函数,大小写不敏感,支持数组式批量替换 感谢网友franci,提醒添加
substr_replace X 部分替换字符串函数,可以指定位置index  
       
preg_replace Y 指定匹配模式进行替换,支持子串引用  优先使用
ereg_replace Y 指定匹配模式进行替换,大小写敏感,支持子串引用  
eregi_replace Y 指定匹配模式进行替换,大小写不敏感,支持子串引用  
       
ereg Y 指定模式全文匹配,可以用来匹配判断,或返回匹配数组  
preg_match Y 指定模式匹配一次退出,可以用来是否匹配判断,或使用返回的匹配数组  优先使用
preg_match_all Y 指定模式全文匹配,一般用来使用返回的匹配数组  优先使用
       
preg_split Y 指定匹配模式下正则剖分,如果能用最好还是使用explode或str_split  
str_split X 指定长度剖分字符串,默认单个字符剖分成数组  
explode X 可以指定单个或多个字符剖分字符串,成功则返回数组,例如12345按照34剖分则返回12和5  
       
 preg_quote  -  转义正则表达式字符,意思就是为特殊字符加上反斜线,正则表达式的特殊字符包括:. + * ? [ ^ ] $ ( ) { } = ! < > | : -  
       

php mysql_escape_string与addslashes区别详解,大家可参考一下本文章。

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

下列字符受影响:

•x00
•n
•r

•'
•"
•x1a
如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。


addslashes() 函数在指定的预定义字符前添加反斜杠。

这些预定义字符是:

•单引号 (')
•双引号 (")
•反斜杠 ()
•NULL

区别总结
mysql_escape_string与addslashes的区别在于  
mysql_escape_string总是将“'”转换成“'”  

而addslashes  
在magic_quotes_sybase=on时将“'”转换成“''”  
在magic_quotes_sybase=off时将“'”转换成“'”

php中global和$GLOBALS[]是比较常见全局变量了,下面我们给大家看一个简单的实例,来区别一下global和$GLOBALS[]用法吧。

根据官方的解释是 :

1.$GLOBALS['var']是外部的全局变量本身。

 代码如下 复制代码

<?php 
$var1 = 1; 
function test(){ 
     unset($GLOBALS['var1']); 

test(); 
echo $var1; 
?> 


2.global $var是外部$var的同名引用或者指针。

 

 代码如下 复制代码
$globalStr = '.com';
 
function globalTest(){
 
 global $globalStr;
 
 $globalStr = 'coderbolg'.$globalStr;
 
 unset($globalStr);
 
}
 
globalTest();
 
echo $globalStr; //输入: coderbolg.com
本文章介绍了关于PHP & HTML & JavaScript & MySQL 代码如何互相传值 ,有需要学习的朋友可参考一下

1.PHP

a.PHP -> HTML & JavaScript

额 超简单,我也要写= =~

html代码中

 代码如下 复制代码
<input type=""  readonly="readonly" style='background-color:#DCDCDC' value=<?php echo $perinfo[ID];?> />

   JavaScript代码中

 代码如下 复制代码
<script type="text/javascript">
var ability=<?php echo JSON($array);?>;
</script> 

 b.PHP  <-> MySQL


php代码中

 代码如下 复制代码


<?php
$dbcnx = @mysql_connect ( "localhost", "root", "1234" );
if (! $dbcnx) {
    echo ("Unable to connect to the " . "database server at this time.");
    exit ();
}

if (! @mysql_select_db ( "pms" )) {
    echo ("Unable to locate the joke " . "database at this time.");
    exit ();
}
mysql_query ( "SET NAMES 'GB2312'" );


    $q=mysql_query("select * from ability where ALV = 1");
    while($row=mysql_fetch_array($q)){
    $array1[] = $row[AName];
}
?>

2.HTML

a. HTML -> PHP (POST方式)

html代码中

 代码如下 复制代码
<form id="form" name="form" method="POST" action="do.php">
<input type="hidden" id="count" name="count" value="1"/>
<input type="submit" name="Submit" value="Search"/>
</form> 

 do.php 文件代码中

 代码如下 复制代码
<?php
echo $_POST['count'];
?> 

 b. HTML -> JavaScript


JavaScript代码中 (可获得,可更改)

 代码如下 复制代码

<script type="text/javascript">
var te = document.getElementById("count"); 
te.value = 1; 
</script>

3.JavaScript

a. JavaScript -> HTML (通用法, 未验证)

JavaScript代码中

 

 代码如下 复制代码
<script type="text/javascript">
function f(){
var id = "2";
var a = document.getElementById("a");
a.href.replace("(n)", id);
}
</script> 

 html代码

 代码如下 复制代码
<a id="a" href="ExportArticle.action?articles=(n)"/>  b. JavaScript ->

PHP

通过html的转接

1.JavaScript代码先给html

 代码如下 复制代码

<script type="text/javascript">
var i = 1;
var te = document.getElementById("count"); 
te.value = i; 
</script>  2.html代码给php

<form id="form" name="form" method="POST" action="do.php">
<input type="hidden" id="count" name="count" value="1"/>
<input type="submit" name="Submit" value="Search"/>
</form>  3.do.php接收到

<?php
echo $_POST['count'];
?>

[!--infotagslink--]

相关文章