页:
[1]
2
3
4
|
我的连接数据库和安全处理语句
[php]<?
@mysql_connect($db_host, $db_user, $db_pass);
@mysql_select_db($db_name);
$mysql_ver = mysql_get_server_info();
if($mysql_ver > '4.1'){
mysql_query("SET NAMES $charset");
}
?>[/php]
以上相关还有创建数据库和表的操作
[php]<?php
//销毁以下变量
unset($_ENV,$HTTP_ENV_VARS,$_REQUEST,$HTTP_POST_VARS,$HTTP_GET_VARS,$HTTP_POST_FILES,$HTTP_COOKIE_VARS);
$Is_Gmqgg=get_magic_quotes_gpc();
if(!$Is_Gmqgg)
{
//$_POST 经由 HTTP POST 方法提交至脚本的变量。
Add_S($_POST);
//$_GET 经由 URL 请求提交至脚本的变量。
Add_S($_GET);
//$_FILES 通过 HTTP POST 方法传递的已上传文件项目组成的数组。
Add_S($_FILES);
//$_COOKIE 经由 HTTP Cookies 方法提交至脚本的变量。
Add_S($_COOKIE);}
if(!ini_get('register_globals') || !$Is_Gmqgg)
{
@extract($_POST,EXTR_SKIP);
@extract($_GET,EXTR_SKIP);
@extract($_COOKIE,EXTR_SKIP);
@extract($_FILES,EXTR_SKIP);
}
//检查$_POST和$_GET数组,如果其key值不是_开头且$$key变量没被设置过,设置相应$$_key值为$_POST[$_key]
foreach($_POST as $_key=>$_value){
!ereg("^_",$_key) && !isset($$_key) && $$_key=$_POST[$_key];
}
foreach($_GET as $_key=>$_value){
!ereg("^_",$_key) && !isset($$_key) && $$_key=$_GET[$_key];
}
//递归执行,使得每个数组中的字符串都是为了数据库查询语句等的需要在某些特殊字符前加上了反斜线的字符串
function Add_S(&$array){
foreach($array as $key=>$value){
if(!is_array($value)){
//addslashes -- 使用反斜线引用字符串,返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加
//上了反斜线。这些字符是单引号(')、双引号(")、反斜线()与 NUL(NULL 字符)。 一个使用
//addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对
//其进行转义。大多数据库使用 作为转义符:O'reilly。这样可以将数据放入数据库中,而不会插入额外的 。
//当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。默认情况下,
//PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行
//addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致
//双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
$array[$key]=addslashes($value);
}else{
Add_S($array[$key]);
}
}
}
?>
[/php]以上有点乱请多指教 |
| kickkick123 | 2007-2-28 02:20 PM |
|
| 实际中应该怎么运用呢 |
|
[quote]原帖由 [i]kickkick123[/i] 于 2007-2-28 10:20 PM 发表
实际中应该怎么运用呢 [/quote]
上面的放到config页、下面的global以下就ok所有其他页都包括 |
| 007007jing | 2007-4-26 01:12 PM |
|
xiexie
我想问下 怎样防止一个用户ID重复登陆
在数据库中设置一个在线标志好吗?
还有别的方法吗 |
|
[quote]原帖由 [i]007007jing[/i] 于 2007-4-26 09:12 PM 发表
xiexie
我想问下 怎样防止一个用户ID重复登陆
在数据库中设置一个在线标志好吗?
还有别的方法吗 [/quote]
还好 |
| deng0685 | 2007-5-6 08:07 AM |
|
| 高手!! |
|
[php]$Date_1=date("Y-n-j");
$Date_2="2007-5-7";
$Date_List_1=explode("-",$Date_1);
$Date_List_2=explode("-",$Date_2);
$d1=mktime(0,0,0,$Date_List_1[1],$Date_List_1[2],$Date_List_1[0]);
$d2=mktime(0,0,0,$Date_List_2[1],$Date_List_2[2],$Date_List_2[0]);
$Days=round(($d1-$d2)/3600/24);
if($Days<120){
set_time_limit(0);
}[/php] |
|
[code]<select id="country" name="country"><option value="US" selected>United States</option>
<option value="AD">Andorra</option>
<option value="AI">Anguilla</option>
<option value="AR">Argentina</option>
<option value="AW">Aruba</option>
<option value="AU">Australia</option>
<option value="AT">Austria</option>
<option value="BS">Bahamas</option>
<option value="BH">Bahrain</option>
<option value="BB">Barbados</option>
<option value="BE">Belgium</option>
<option value="BM">Bermuda</option>
<option value="BW">Botswana</option>
<option value="BR">Brazil</option>
<option value="VG">British Virgin Islands</option>
<option value="BN">Brunei</option>
<option value="CA">Canada</option>
<option value="CV">Cape Verde</option>
<option value="KY">Cayman Islands</option>
<option value="CL">Chile</option>
<option value="C2">China</option>
<option value="CR">Costa Rica</option>
<option value="HR">Croatia</option>
<option value="CY">Cyprus</option>
<option value="CZ">Czech Republic</option>
<option value="DK">Denmark</option>
<option value="DO">Dominican Republic</option>
<option value="EC">Ecuador</option>
<option value="EE">Estonia</option>
<option value="FK">Falkland Islands</option>
<option value="FJ">Fiji</option>
<option value="FI">Finland</option>
<option value="FR">France</option>
<option value="GF">French Guiana</option>
<option value="PF">French Polynesia</option>
<option value="DE">Germany</option>
<option value="GI">Gibraltar</option>
<option value="GR">Greece</option>
<option value="GP">Guadeloupe</option>
<option value="HK">Hong Kong</option>
<option value="HU">Hungary</option>
<option value="IS">Iceland</option>
<option value="IN">India</option>
<option value="ID">Indonesia</option>
<option value="IE">Ireland</option>
<option value="IL">Israel</option>
<option value="IT">Italy</option>
<option value="JM">Jamaica</option>
<option value="JP">Japan</option>
<option value="JO">Jordan</option>
<option value="LV">Latvia</option>
<option value="LI">Liechtenstein</option>
<option value="LT">Lithuania</option>
<option value="LU">Luxembourg</option>
<option value="MY">Malaysia</option>
<option value="MV">Maldives</option>
<option value="MT">Malta</option>
<option value="MQ">Martinique</option>
<option value="YT">Mayotte</option>
<option value="MX">Mexico</option>
<option value="MS">Montserrat</option>
<option value="NA">Namibia</option>
<option value="NL">Netherlands</option>
<option value="AN">Netherlands Antilles</option>
<option value="NC">New Caledonia</option>
<option value="NZ">New Zealand</option>
<option value="NO">Norway</option>
<option value="PH">Philippines</option>
<option value="PN">Pitcairn Islands</option>
<option value="PL">Poland</option>
<option value="PT">Portugal</option>
<option value="QA">Qatar</option>
<option value="RE">Reunion</option>
<option value="RU">Russia</option>
<option value="WS">Samoa</option>
<option value="SG">Singapore</option>
<option value="SK">Slovakia</option>
<option value="SI">Slovenia</option>
<option value="SB">Solomon Islands</option>
<option value="ZA">South Africa</option>
<option value="KR">South Korea</option>
<option value="ES">Spain</option>
<option value="SH">St. Helena</option>
<option value="KN">St. Kitts and Nevis</option>
<option value="LC">St. Lucia</option>
<option value="PM">St. Pierre and Miquelon</option>
<option value="SE">Sweden</option>
<option value="CH">Switzerland</option>
<option value="TW">Taiwan</option>
<option value="TH">Thailand</option>
<option value="TG">Togo</option>
<option value="TO">Tonga</option>
<option value="TT">Trinidad and Tobago</option>
<option value="TN">Tunisia</option>
<option value="TR">Turkey</option>
<option value="TC">Turks and Caicos Islands</option>
<option value="UA">Ukraine</option>
<option value="AE">United Arab Emirates</option>
<option value="GB">United Kingdom</option>
<option value="UY">Uruguay</option>
<option value="VE">Venezuela</option>
<option value="VN">Vietnam</option>
<option value="WF">Wallis and Futuna Islands</option></select>[/code] |
|
[php]<?
$price=20.3000;
echo sprintf("%01.3f", $price);
?>[/php] |
|
[php]<?php
$str = 'This is an encoded string';
echo base64_encode($str);
?> <?php
$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo base64_decode($str);
?> [/php] |
| grs7002 | 2007-5-22 03:44 PM |
|
| 感谢搂主分享 能否给个使用实例 谢谢 |
| MyNetInfo | 2007-5-23 04:13 AM |
|
| 留个脚印先。 |
|
[php]===> 如何截取文件扩展名
如上传文件的扩展名等,此扩展名可能是伪造的.想判断文件类型请用mime_content_type()...
1 <?php
2 // 第一种
3 $extendname = array_pop(explode ( ".",$filename));
4
5 // 第二种
6 $extendname = end(explode(".", $filename));
7
8 // 第三种
9 $file_part = pathinfo($filename);
10 $extendname = $file_part["extension"];
11 ?>
===> 一个缓冲输出显示的例子
1.有些Apache的模块,比如mod_gzip,可能自己进行输出缓存,这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。
2.甚至浏览器也会在显示之前,缓存接收到的内容。例如 Netscape 浏览器会在接受到换
行或 html 标记的开头之前缓存内容,并且在接受到 </table> 标记之前,不会显示出整个表格。
1 <?php
2 set_time_limit(0);
3 ob_start();
4
5 // 一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,
6 // 所以必须发送一些额外的空格来让这些浏览器显示页面内容。
7 echo str_pad('Loading... ',4096)."<br>\n";
8
9 for ($i = 0; $i < 30; $i++) {
10 echo "=";
11 flush();
12 ob_flush();
13 sleep(1);
14 }
15 ob_end_flush();
16 ?>
[/php]
[[i] 本帖最后由 c1a1o1 于 2007-5-24 02:11 PM 编辑 [/i]] |
|
[php]get_included_files() example (abc.php)
<?php
include 'test1.php';
include_once 'test2.php';
require 'test3.php';
require_once 'test4.php';
$included_files = get_included_files();
foreach ($included_files as $filename) {
echo "$filename\n";
}
?>
[/php] |
|
[php]
CODE:[Copy to clipboard]<?php
//使用LEFT JOIN
SELECT `sgflash`.`f_name`, `sgflash_comment`.`contents`, `sgflash_comment`.`nickname`, `sgflash_comment`.`date`
FROM `sgflash_comment` LEFT JOIN `sgflash`
ON (`sgflash_comment`.`fid`=`sgflash`.`fid`)
ORDER BY `sgflash_comment`.`date` DESC LIMIT 0, 10000
//不使用LEFT JOIN
SELECT `sgflash`.`f_name`, `sgflash_comment`.`contents`, `sgflash_comment`.`nickname`, `sgflash_comment`.`date`
FROM `sgflash_comment`, `sgflash`
WHERE `sgflash_comment`.`fid`=`sgflash`.`fid`
ORDER BY `sgflash_comment`.`date` DESC LIMIT 0, 10000
?>
测试对比
显示行 0 - 29 (10000 总计, 查询花费 0.6760 秒) 第一次执行用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 1.5532 秒) 第二次执行不用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 0.6655 秒) 第三次执行使用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 1.3730 秒) 第四次执行不合使用LEFT JOIN [/php] |
Powered by Discuz! Archiver 6.1.0
© 2001-2006 Comsenz Inc.
Processed in 0.03665 second(s), 2 queries |