马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。成绩 1:为何我得不到变量 我在一网页向另外一网页POST数据name,为何输入$name时却得不就任何值?
在PHP4.2今后的版本中register_global默许为off
若想获得从另外一页面提交的变量:
办法一:在PHP.ini中找到register_global,并把它设置为on.
办法二:在吸收网页最后面放上这个extract($_POST);extract($_GET);(注重extract($_SESSION)前必需要有Session_Start()).
办法三:一个一个读取变量$a=$_GET["a"];$b=$_POST["b"]等,这类办法固然费事,但对照平安.
2:调试你的法式
在运转时必需晓得某个变量为什么值。我是如许做的,创立一文件debug.php,其内容以下:
PHP代码:--------------------------------------------------------------------------------
<?PHP
Ob_Start();
Session_Start();
Echo "<pre>";
Echo "本页失掉的_GET变量有:";
Print_R($_GET);
Echo "本页失掉的_POST变量有:";
Print_R($_POST);
Echo "本页失掉的_COOKIE变量有:";
Print_R($_COOKIE);
Echo "本页失掉的_SESSION变量有:";
Print_R($_SESSION);
Echo "</pre>";
?>
--------------------------------------------------------------------------------
然后在php.ini中设置:include_path = "c:/php",并将debug.php放在此文件夹,
今后就能够在每一个网页里包括此文件,检查失掉的变量名和值.
3:若何利用session
但凡与session有关的,之前必需挪用函数session_start();
为session付值很复杂,如:
PHP代码:--------------------------------------------------------------------------------
<?php
Session_start();
$Name = "这是一个Session例子";
Session_Register("Name");//注重,不要写成:Session_Register("$Name");
Echo $_SESSION["Name"];
//以后$_SESSION["Name"]为"这是一个Session例子"
?>
--------------------------------------------------------------------------------
在php4.2以后,可觉得session直接付值:
PHP代码:--------------------------------------------------------------------------------
<?PHP
Session_Start();
$_SESSION["name"]="value";
?>
--------------------------------------------------------------------------------
作废session可以如许:
PHP代码:--------------------------------------------------------------------------------
<?php
session_start();
session_unset();
session_destroy();
?>
--------------------------------------------------------------------------------
作废某个session变量在php4.2以上还有BUG.
注重:
1:在挪用Session_Start()之前不克不及有任何输入.例以下面是毛病的.
==========================================
1行
2行 <?PHP
3行 Session_Start();//之前在第一行已有输入
4行 .....
5行 ?>
==========================================
提醒1:
但凡呈现"........headers already sent..........",就是Session_Start()之前向阅读器输入信息.
去失落输入就正常,(COOKIE也会呈现这类毛病,毛病缘由一样)
提醒2:
假如你的Session_Start()放在轮回语句里,而且很难肯定之前哪里向阅读器输入信息,可以用上面这类办法:
1行 <?PHP Ob_Start(); ?>
........这里是你的法式......
2:这是甚么毛病
Warning: session_start(): open(/tmp\sess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
由于你没有指定session文件的寄存途径.
处理办法:
(1)在c盘创立文件夹tmp
(2)翻开php.ini,找到session.save_path,修正为session.save_path= "c:/tmp"
4:为何我向另外一网页传送变量时,只失掉前半局部,以空格开首的则全体丧失
PHP代码:--------------------------------------------------------------------------------
<?php
$Var="hello php";//修正为$Var=" hello php";尝尝失掉甚么了局
$post= "receive.php?Name=".$Var;
header("location:$post");
?>
--------------------------------------------------------------------------------
receive.php的内容:
PHP代码:--------------------------------------------------------------------------------
<?PHP
Echo "<pre>";
Echo $_GET["Name"];
Echo "</pre>";
?>
--------------------------------------------------------------------------------
准确的办法是:
PHP代码:--------------------------------------------------------------------------------
<?php
$Var="hello php";
$post= "receive.php?Name=".urlencode($Var);
header("location:$post");
?>
--------------------------------------------------------------------------------
在吸收页面你不需求利用Urldecode(),变量会主动编码.
5:若何截取指定长度汉字而不会呈现以"?>"开头,超越局部以"..."取代
普通来讲,要截取的变量来自Mysql,起首要包管谁人字段长度要足够长,通常是char(200),可以坚持100个汉字,包含标点.
PHP代码:--------------------------------------------------------------------------------
<?PHP
$str="这个字符好长呀,'";
$Short_Str=showShort($str,4);//截取后面4个汉字,了局为:这个字符...
Echo "$Short_Str";
Function csubstr($str,$start,$len)
{
$strlen=strlen($str);
$clen=0;
for($i=0;$i<$strlen;$i++,$clen++)
{
if ($clen>=$start+$len)
break;
if(ord(substr($str,$i,1))>0xa0)
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,2);
$i++;
}
else
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,1);
}
}
return $tmpstr;
}
Function showShort($str,$len)
{
$tempstr = csubstr($str,0,$len);
if ($str<>$tempstr)
$tempstr .= "..."; //要以甚么开头,修正这里就能够.
return $tempstr;
}
--------------------------------------------------------------------------------
6:标准你的SQL语句
在表格,字段后面加上"`",如许就不会由于误用关头字而呈现毛病,
固然我其实不保举你利用关头字.
例如
$Sql="INSERT INTO `xltxlm` (`author`, `title`, `id`, `content`, `date`) VALUES ('xltxlm', 'use`', 1, 'criterion your sql string ', '2003-07-11 00:00:00')"
"`"怎样输出? 在TAB键下面.
7:若何使Html/PHP格局的字符串不被注释,而是照原样显示
PHP代码:--------------------------------------------------------------------------------
<?PHP
$str="<h1>PHP</h1>";
Echo "被注释过的: ".$str."<br>经由处置的:";
Echo htmlentities(nl2br($str));
?>
--------------------------------------------------------------------------------
8:怎样在函数里获得函数外的变量值
PHP代码:--------------------------------------------------------------------------------
<?PHP
$a="PHP";
foo();
Function foo()
{
global $a;//删除这里看看是甚么了局
Echo "$a";
}
?>
--------------------------------------------------------------------------------
9:我怎样晓得体系默许撑持甚么函数
PHP代码:--------------------------------------------------------------------------------
<?php
$arr = get_defined_functions();
Function php() {
}
echo "<pre>";
Echo "这里显示体系所撑持的一切函数,和自定以函数php\n";
print_r($arr);
echo "</pre>";
?>
--------------------------------------------------------------------------------
10:若何对照两个日期相差几天
PHP代码:--------------------------------------------------------------------------------
<?PHP
$Date_1="2003-7-15";//也能够是:$Date_1="2003-6-25 23:29:14";
$Date_2="1982-10-1";
$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);
Echo "偶已斗争了 $Days 天'";
?>
--------------------------------------------------------------------------------
11:为何我晋级PHP后,本来的法式呈现满屏的 Notice: Undefined variable:
这是正告的意思,因为变量不决义引发的.
翻开php.ini,找到最上面的error_reporting,修正为error_reporting = E_ALL & ~E_NOTICE
关于Parse error毛病
error_reporting(0)没法封闭.
假如你想封闭任何毛病提醒,翻开php.ini,找到display_errors,设置为display_errors = Off.今后任何毛病都不会提醒.
那甚么是error_reporting?
12:我想在每一个文件最前,最初面都加上一文件.但一个一个添加很费事
1:翻开php.ini文件
设置 include_path= "c:"
2:写两个文件
auto_prepend_file.php 和 auto_append_file.php 保留在c盘,他们将主动依靠在每一个php文件的头部和尾部.
3:在php.ini中找到:
Automatically add files before or after any PHP document.
auto_prepend_file = auto_prepend_file.php;依靠在头部
auto_append_file = auto_append_file.php;依靠在尾部
今后你每一个php文件就相当于
PHP代码:--------------------------------------------------------------------------------
<?php
Include "auto_prepend_file.php" ;
.......//这里是你的法式
Include "auto_append_file.php";
?>
--------------------------------------------------------------------------------
13:若何使用PHP上传文件
PHP代码:--------------------------------------------------------------------------------
<html><head>
<title>上载文件表单</title></head>
<body>
<form enctype="multipart/form-data" action="" method="post">
请选择文件: <br>
<input name="upload_file" type="file"><br>
<input type="submit" value="上传文件">
</form>
</body>
</html>
<?
$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];
if($upload_file){
$file_size_max = 1000*1000;// 1M限制文件上传最大容量(bytes)
$store_dir = "d:/";// 上传文件的贮存地位
$accept_overwrite = 1;//是不是答应掩盖不异文件
// 反省文件巨细
if ($upload_file_size > $file_size_max) {
echo "对不起,你的文件容量大于划定";
exit;
}
// 反省读写文件
if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
Echo "存在不异文件名的文件";
exit;
}
//复制文件到指定目次
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo "复制文件掉败";
exit;
}
}
Echo "<p>你上传了文件:";
echo $_FILES['upload_file']['name'];
echo "<br>";
//客户端机械文件的原称号。
Echo "文件的 MIME 类型为:";
echo $_FILES['upload_file']['type'];
//文件的 MIME 类型,需求阅读器供应该信息的撑持,例如“image/gif”。
echo "<br>";
Echo "上传文件巨细:";
echo $_FILES['upload_file']['size'];
//已上传文件的巨细,单元为字节。
echo "<br>";
Echo "文件上传后被一时贮存为:";
echo $_FILES['upload_file']['tmp_name'];
//文件被上传后在办事端贮存的一时文件名。
echo "<br>";
$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
case 0:
Echo "上传胜利"; break;
case 1:
Echo "上传的文件超越了 php.ini 中 upload_max_filesize 选项限制的值."; break;
case 2:
Echo "上传文件的巨细超越了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"; break;
case 3:
Echo "文件只要局部被上传";break;
case 4:
Echo "没有文件被上传";break;
}
?>
--------------------------------------------------------------------------------
14:若何设置装备摆设GD库
上面是我的设置装备摆设进程
1:用dos号令(也能够手动操作,拷贝dlls文件夹里一切dll文件到system32目次下) copy c:\php\dlls\*.dll c:\windows\system32\
2:翻开php.ini
设置extension_dir = "c:/php/extensions/";
3:
extension=php_gd2.dll;把extension后面的逗号去失落,假如没有php_gd2.dll,php_gd.dll也一样,包管的确存在这一文件c:/php/extensions/php_gd2.dll
4:运转上面法式停止测试
PHP代码:--------------------------------------------------------------------------------
<?php
Ob_end_flush();
//注重,在此之前不克不及向阅读器输入任何信息,要注重是不是设置了 auto_prepend_file.
header ("Content-type: image/png");
$im = @imagecreate (200, 100)
or die ("没法创立图象");
$background_color = imagecolorallocate ($im, 0,0, 0);
$text_color = imagecolorallocate ($im, 230, 140, 150);
imagestring ($im, 3, 30, 50, "A Simple Text String", $text_color);
imagepng ($im);
?>
--------------------------------------------------------------------------------
点击这里检查了局
15:甚么是UBB代码
UBB代码是HTML的一个变种,是Ultimate Bulletin Board (国外一个BBS法式,国际也有很多中央利用这个法式)采取的一种特别的TAG.
即便制止利用 HTML,你也能够用 UBBCode? 来完成.或许你更但愿利用 UBBCode? 而不是 HTML, 即便服装论坛答应利用 HTML, 由于利用起来代码较少也更平安.
Q3boy的UBB外面付有例子,可以直接运转测试
16:我想修正MySQL的用户,暗码
起首要声明一点,大局部情形下,修正MySQL是需求有mysql里的root权限的,
所以普通用户没法更改暗码,除非恳求办理员.
办法一
利用phpmyadmin,这是最复杂的了,修正mysql库的user表,
不外别忘了利用PASSWORD函数。
办法二
利用mysqladmin,这是后面声明的一个特例。
mysqladmin -u root -p password mypasswd
输出这个号令后,需求输出root的原暗码,然后root的暗码将改成mypasswd。
把号令里的root改成你的用户名,你就能够改你本人的暗码了。
固然假如你的mysqladmin毗连不上mysql server,或你没有举措履行mysqladmin,
那末这类办法就是有效的。
并且mysqladmin没法把暗码清空。
上面的办法都在mysql提醒符下利用,且必需有mysql的root权限:
办法三
mysql> INSERT INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
切实地说这是在增添一个用户,用户名为jeffrey,暗码为biscuit。
在《mysql中文参考手册》里有这个例子,所以我也就写出来了。
注重要利用PASSWORD函数,然后还要利用FLUSH PRIVILEGES。
办法四
和办法三一样,只是利用了REPLACE语句
mysql> REPLACE INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
办法五
利用SET PASSWORD语句,
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
你也必需利用PASSWORD()函数,
然而不需求利用FLUSH PRIVILEGES。
办法六
利用GRANT ... IDENTIFIED BY语句
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
这里PASSWORD()函数是不用要的,也不需求利用FLUSH PRIVILEGES。
注重: PASSWORD() [不是]以在Unix口令加密的一样办法实施口令加密。
17:我想晓得他是经由过程哪一个网站毗连到本页
PHP代码:--------------------------------------------------------------------------------
<?php
//必需经由过程超等毗连进入才有输入
Echo $_SERVER['HTTP_REFERER'];
?>
--------------------------------------------------------------------------------
18:数据放入数据库和掏出来显示在页面需求注重甚么
入库时
$str=addslashes($str);
$sql="insert into `tab` (`content`) values('$str')";
出库时
$str=stripslashes($str);
显示时
$str=htmlspecialchars(nl2br($str)) ;
19:若何读取以后地址栏信息
PHP代码:--------------------------------------------------------------------------------
<?php
$s="http://{$_SERVER['HTTP_HOST']}:{$_SERVER["SERVER_PORT"]}{$_SERVER['SCRIPT_NAME']}";
$se='';
foreach ($_GET as $key => $value) {
$se.=$key."=".$value."&";
}
$se=Preg_WordStr("/(.*)&$/","$1",$se);
$se?$se="?".$se:"";
echo $s."?$se";
?>
--------------------------------------------------------------------------------
20:我点击前进按钮,为何之前填写的器材不见
这是由于你利用了session.
处理举措:
PHP代码:--------------------------------------------------------------------------------
<?php
session_cache_limiter('private, must-revalidate');
session_start();
...........
..........
?>
--------------------------------------------------------------------------------
21:怎样在图片里显示IP地址
PHP代码:--------------------------------------------------------------------------------
<?
Header("Content-type: image/png");
$img = ImageCreate(180,50);
$ip = $_SERVER['REMOTE_ADDR'];
ImageColorTransparent($img,$bgcolor);
$bgColor = ImageColorAllocate($img, 0x2c,0x6D,0xAF); // 后台色彩
$shadow = ImageColorAllocate($img, 250,0,0); // 暗影色彩
$textColor = ImageColorAllocate($img, oxff,oxff,oxff); // 字体色彩
ImageTTFText($img,10,0,78,30,$shadow,"d:/windows/fonts/Tahoma.ttf",$ip); //显示后台
ImageTTFText($img,10,0,25,28,$textColor,"d:/windows/fonts/Tahoma.ttf","your ip is".$ip); // 显示IP
ImagePng($img);
imagecreatefrompng($img);
ImageDestroy($img);
?>
--------------------------------------------------------------------------------
22:若何获得用户的真实IP
PHP代码:--------------------------------------------------------------------------------
<?
function iptype1 () {
if (getenv("HTTP_CLIENT_IP")) {
return getenv("HTTP_CLIENT_IP");
}
else {
return "none";
}
}
function iptype2 () {
if (getenv("HTTP_X_FORWARDED_FOR")) {
return getenv("HTTP_X_FORWARDED_FOR");
}
else {
return "none";
}
}
function iptype3 () {
if (getenv("REMOTE_ADDR")) {
return getenv("REMOTE_ADDR");
}
else {
return "none";
}
}
function ip() {
$ip1 = iptype1();
$ip2 = iptype2();
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
return $ip1;
}
elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") {
return $ip2;
}
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
return $ip3;
}
else {
return "none";
}
}
Echo ip();
?>
--------------------------------------------------------------------------------
23:若何从数据库读取三天内的一切纪录
起首表格里要有一个DATETIME字段纪录工夫,
格局为'2003-7-15 16:50:00'
SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3;
24:若何近程链接Mysql数据库
在增添用户的mysql内外有一个host字段,修正为"%",或指定答应毗连的ip地址,如许,你就能够近程挪用了。
$link=mysql_connect("192.168.1.80:3306","root","");
25:正则究竟怎样用
点击这里
正则表达式中的特别字符
26:用Apache后,主页呈现乱码
办法一:
AddDefaultCharset ISO-8859-1 改成 AddDefaultCharset off
办法二:
AddDefaultCharset GB2312
========================================================
tip:
人人贴代码时GB2312会被注释成??????
改成如许就不会
GB2312
10:若何对照两个日期相差几天,(更复杂的算法)
PHP代码:--------------------------------------------------------------------------------
<?PHP
$Date_1="2003-7-15";//也能够是:$Date_1="2003-7-15 23:29:14";
$Date_2="1982-10-1";
$d1=strtotime($Date_1);
$d2=strtotime($Date_2);
$Days=round(($d1-$d2)/3600/24);
Echo "偶已斗争了 $Days 天'";
?>
--------------------------------------------------------------------------------
27:为何单引号,双引号在承受页面酿成(\'\")
处理办法:
办法一:在php.ini中设置:magic_quotes_gpc = Off
办法二: $str=stripcslashes($str)
28:怎样让法式一向运转下去,而不是超越30秒就中断
set_time_limit(60)//最长运转工夫一分钟
set_time_limit(0)//运转到法式本人停止,或手动中断
29:盘算以后在耳目数
例子一:用文本完成
PHP代码:--------------------------------------------------------------------------------
<?php
//起首你要有读写文件的权限
//本法式可以直接运转,第一次报错,今后就能够
$online_log = "count.dat"; //保留人数的文件,
$timeout = 30;//30秒内没举措者,以为失落线
$entries = file($online_log);
$temp = array();
for ($i=0;$i<count($entries);$i++) {
$entry = explode(",",trim($entries[$i]));
if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time())) {
array_push($temp,$entry[0].",".$entry[1]."\n"); //掏出其他阅读者的信息,并去失落超时者,保留进$temp
}
}
array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout))."\n"); //更新阅读者的工夫
$users_online = count($temp); //盘算在耳目数
$entries = implode("",$temp);
//写入文件
$fp = fopen($online_log,"w");
flock($fp,LOCK_EX); //flock() 不克不及在NFS和其他的一些收集文件体系中正常任务
fputs($fp,$entries);
flock($fp,LOCK_UN);
fclose($fp);
echo "以后有".$users_online."人在线";
?>
--------------------------------------------------------------------------------
例子二:
用数据库完成在线用户
30:甚么是模板,怎样用
这里有几篇关于模板的文章
我用的是phplib模板
上面是个中几个函数的利用
$T->Set_File("随意界说","模板文件.tpl");
$T->Set_Block("在set_file中界说的","<!-- 来自模板 -->","随意界说");
$T->Parse("在Set_Block中界说的","<!-- 来自模板 -->",true);
$T->Parse("随意输入了局","在Set_File中界说的");
设置轮回格局为:
<!--(多于一个空格) BEGIN $handle(多于一个空格)-->
若何将模板生成静态网页
PHP代码:--------------------------------------------------------------------------------
<?php
//这里利用phplib模板
............
............
$tpl->parse("output","html");
$output = $tpl->get("output");// $output 为全部网页内容
function wfile($file,$content,$mode='w') {
$oldmask = umask(0);
$fp = fopen($file, $mode);
if (!$fp) return false;
fwrite($fp,$content);
fclose($fp);
umask($oldmask);
return true;
}
// 写到文件里
Wfile($FILE,$output);
header("location:$FILE");//重定向到生成的网页
}
?>
--------------------------------------------------------------------------------
phplib下载地址 smarty下载地址
31:怎样用php注释字符
好比:输出2+2*(1+2),主动输入8
可以用eval函数
PHP代码:--------------------------------------------------------------------------------
<form method=post action="">
<input type="text" name="str"><input type="submit">
</form>
<?php
$str=$_POST['str'];
eval("\$o=$str;");
Echo "$o";
?>
--------------------------------------------------------------------------------
别的,用此函数必需出格当心!!
假如有人输出format: d:会是甚么了局?
刚开始写页面程序,调试完书中的例子。然后就可以尝试编写留言板了, |