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 <br> Ob_Start(); <br> Session_Start(); <br> Echo "<pre>"; <br><br> Echo "本页得到的_GET变量有:"; <br> Print_R($_GET); <br><br> Echo "本页得到的_POST变量有:"; <br> Print_R($_POST); <br><br> Echo "本页得到的_COOKIE变量有:"; <br> Print_R($_COOKIE); <br><br> Echo "本页得到的_SESSION变量有:"; <br> Print_R($_SESSION); <br><br> Echo "</pre>"; <br> ?> <br><br>
然后在php.ini中设置:include_path = "c:/php",并将debug.php放在此文件夹,以后就可以在每个网页里包含此文件,查看得到的变量名和值.
3:如何使用session
凡是与session有关的,之前必须调用函数session_start();
为session付值很简单,如:
PHP代码: <?php <br> Session_start(); <br> $Name = "这是一个Session例子"; <br> Session_Register("Name");//注意,不要写成:Session_Register("$Name"); <br> Echo $_SESSION["Name"]; <br> //之后$_SESSION["Name"]为"这是一个Session例子" <br> ?> <br><br>
在php4.2之后,可以为session直接付值:
PHP代码: <?PHP <br> Session_Start(); <br> $_SESSION["name"]="value"; <br> ?> <br><br>
取消session可以这样:
PHP代码: <?php <br> session_start(); <br> session_unset(); <br> session_destroy(); <br> ?> <br><br>
取消某个session变量在php4.2以上还有BUG.
注意:
1:在调用Session_Start()之前不能有任何输出.例如下面是错误的.
==========================================
1行
2行 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 <br> $Var="hello php";//修改为$Var=" hello php";试试得到什么结果 <br> $post= "receive.php?Name=".$Var; <br> header("location:$post"); <br> ?> <br><br> receive.php的内容: <br><br> PHP代码: <br><br> <?PHP <br> Echo "<pre>"; <br> Echo $_GET["Name"]; <br> Echo "</pre>"; <br> ?> <br><br>
正确的方法是:
PHP代码: <?php <br> $Var="hello php"; <br> $post= "receive.php?Name=".urlencode($Var); <br> header("location:$post"); <br> ?> <br><br>
在接收页面你不需要使用Urldecode(),变量会自动编码.
5: システムがデフォルトでサポートする機能を知るにはどうすればよいですか
PHP コード: <?php <br> $arr = get_defined_functions(); <br> Function php() { <br> } <br> echo "<pre>"; <br> Echo "这里显示系统所支持的所有函数,和自定以函数phpn"; <br> print_r($arr); <br> echo "</pre>"; <br> ?> <br><br>
$arr = get_defind_functions(); Function php() { }
echo "
print_r($arr);
echo ""; ?> <?PHP <br> $Date_1="2003-7-15";//也可以是:$Date_1="2003-7-15 23:29:14"; <br> $Date_2="1982-10-1"; <br> $d1=strtotime($Date_1); <br> $d2=strtotime($Date_2); <br> $Days=round(($d1-$d2)/3600/24); <br> Echo "偶已经奋斗了 $Days 天^_^"; <br> ?> <br>
6: 方法2 つの日付の差は何日ですか? $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); $Days 日間苦労しました ^_^";
?>
7: PHP をアップグレードした後、元のプログラムが全画面表示されるのはなぜですか 注意: 未定義の変数:
これは、警告の意味は未定義の変数によって引き起こされます。
php.ini を開き、一番下にある error_reporting を見つけて、error_reporting = E_ALL & ~E_NOTICE
に変更します。 解析エラーの場合 error_reporting(0) をオフにすることはできません。
エラー プロンプトをオフにしたい場合は、php.ini を開き、display_errors を見つけて、display_errors = Off に設定します。
それで、error_reporting とは何ですか?
8: ファイルの先頭と末尾に
1: php.ini ファイルを開きます
設定 include_path= "c:"
2: 2 つのファイルを書き込みます
Auto_prepend_file.php と auto_append_file.php が保存されますC ドライブにある場合、各 PHP ファイルの先頭と末尾に自動的に追加されます。
3: php.ini にあります:
PHP ドキュメントの前後にファイルを自動的に追加します。
auto_prepend_file。 = auto_prepend_file.php; 先頭に添付
auto_append_file = auto_append_file.php; 末尾に添付 <font face="Arial"> これ以降、各 php ファイルは <br><br> PHP コードと同等になります。 🎜><br><br><br> <?php <br/> Include "auto_prepend_file.php"; <br><strong> ...//これがあなたのプログラムです </strong><br> Include "auto_append_file.php" "; <br> ?> <br> <br>9: PHP の使い方 ファイルアップロード </font> <font face="Arial"><code> PHP コード: <br><br><br><br><br> ; ; <form enctype="multipart/form-data"></form>; ファイルを選択してください。 🎜> <input name="upload_file" type="file"><br><br> <input type="submit" value="ファイルをアップロード"><br> ; <br> html> <br> <br> $upload_file=$_FILES['upload_file']['tmp_name']; <br> $upload_file_name=$_FILES['upload_file'] ; > if($upload_file){ <br> $file_size_max = 1000*1000;// 1M 制限ファイルアップロード最大容量 (バイト) <br> $store_dir = "d:/";// アップロードされたファイルの保存場所 <br> $accept_overwrite = 1;//同じファイルの上書きが許可されているかどうか<br> // ファイル サイズを確認します <br> if ($upload_file_size > $file_size_max) { <br> echo "申し訳ありませんが、ファイル容量が指定されたサイズよりも大きいです"; <br> Exit; <br> } <br><br> // ファイルの読み取りと書き込みをチェック <br> if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) { <br> Echo "ファイル同じファイル名のファイルが存在します" ; <br> Exit; <br> } <br><br> //指定されたディレクトリにファイルをコピーします <br> if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) { <br> echo "ファイルのコピーに失敗しました "; <br> exit <br> } <br><br> Echo "<p> <br> echo $_FILES['upload_file']['name ']; <br> echo "<br>" <br>; //クライアントマシンのファイルの元の名前。 <br><br> Echo "ファイルの MIME タイプは次のとおりです:"; <br> echo $_FILES['upload_file']['type'] <br> //ブラウザが必要とするファイルの MIME タイプこの情報を提供するには、「image/gif」などのサポートされます。 <br> echo "<br>"; <br><br> Echo "アップロード ファイル サイズ:"; <br> echo $_FILES['upload_file']['size']; // アップロードされたファイル サイズ、バイト単位。 <br> echo "<br>"; <br><br> Echo "ファイルは次のように一時的に保存されます:"; <br> echo $_FILES['upload_file']['tmp_name'];ファイルのアップロード後にサーバーに保存される一時ファイル名。 <br> echo "<br>"; <br> $Erroe=$_FILES['upload_file']['error']; <br> switch($Erroe){ <br>ケース 0: <br> エコー "アップロード成功"; <br> ケース 1: <br> エコー "アップロードされたファイルは、PHP.ini の Upload_max_filesize オプションで制限された値を超えています。"; : <br> Echo "アップロードされたファイルのサイズが HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。"; <br> ケース 3: <br> Echo "ファイルは部分的にのみアップロードされました"; <br> ケース 4: <br> Echo "ファイルがアップロードされていません";break; <br> } <br> ?> <br><br><br> 10: GD ライブラリの設定方法</p>
以下は私の構成プロセスです
1: dos コマンドを使用します (手動で実行することもできます。dlls フォルダー内のすべての dll ファイルを system32 ディレクトリにコピーします) copy c:phpdlls*.dll c :Windowssystem32 2: php .ini を開きます
extension_dir = "c:/php/extensions/" を設定します
3:
extension=php_gd2.dll; の場合php_gd2.dll はありません。php_gd.dll についても同様です。このファイル c:/php/extensions/php_gd2.dll が存在することを確認してください
4: 次のプログラムを実行して PHP をテストします。 code: <?php <br/> Ob_end_flush(); <br> //これより前にブラウザに情報を出力できないことに注意してください。
header ("Content-type: image/png" ); $im = @imagecreate (200, 100) <?php <br> Ob_end_flush(); <br> //注意,在此之前不能向浏览器输出任何信息,要注意是否设置了 auto_prepend_file. <br> header ("Content-type: image/png"); <br> $im = @imagecreate (200, 100) <br> or die ("无法创建图像"); <br> $background_color = imagecolorallocate ($im, 0,0, 0); <br> $text_color = imagecolorallocate ($im, 230, 140, 150); <br> imagestring ($im, 3, 30, 50, "A Simple Text String", $text_color); <br> imagepng ($im); <br> ?> <br>
or die ("イメージを作成できません");背景色 = imagecolorallocate ($im, 0,0, 0);
$ text_color = imagecolorallocate ($im, 230, 140, 150); imagestring ($im, 3, 30, 50, "単純なテキストString", $text_color); imagepng ($im);
?>
<font face="Arial"> 即使禁止使用 HTML,你也可以用 UBBCode? 来实现.也许你更希望使用 UBBCode? 而不是 HTML, 即使论坛允许使用 HTML, 因为使用起来代码较少也更安全. <br>5:如何截取指定长度汉字而不会出现以"?>"结尾,超出部分以"..."代替 <br><br> 一般来说,要截取的变量来自MySQL,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点. <br><br> PHP代码: <br><br></font><font face="Arial"><code> <?PHP <br> $str="这个字符好长呀,^_^"; <br> $Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符... <br> Echo "$Short_Str"; <br> Function csubstr($str,$start,$len) <br> { <br> $strlen=strlen($str); <br> $clen=0; <br> for($i=0;$i<$strlen;$i++,$clen++) <br> { <br> if ($clen>=$start+$len) <br> break; <br> if(ord(substr($str,$i,1))>0xa0) <br> { <br> if ($clen>=$start) <br> $tmpstr.=substr($str,$i,2); <br> $i++; <br> } <br> else <br> { <br> if ($clen>=$start) <br> $tmpstr.=substr($str,$i,1); <br> } <br> } <br><br> return $tmpstr; <br> } <br> Function showShort($str,$len) <br> { <br> $tempstr = csubstr($str,0,$len); <br> if ($str<>$tempstr) <br> $tempstr .= "..."; //要以什么结尾,修改这里就可以. <br><br> return $tempstr; <br> } <br><br>
UBB code は HTML の一種であり、究極の掲示板(海外、国内の BBS プログラム)で使用される特殊な TAG を使用している箇所も多くあります。 <br> HTML の使用が禁止されている場合でも、UBBCode を使用することもできます。フォーラムで HTML の使用が許可されている場合でも、UBBCode を使用した方が安全です。 <br>5: 指定した長さの中国語文字を「?>」で終わらずにインターセプトし、余分な部分を <br> の代わりに「?>」「...」で終わらせる方法。 <br> 一般に、インターセプトする変数が MySQL からのものである場合、まずフィールドの長さが十分な長さ (通常は char(200)) であることを確認する必要があります。これは、句読点を含めて 100 文字の中国語文字を保持できます。 <br><br> PHP コード: <strong></strong><br><br><code> <?PHP <br/> $str="この文字は長いです^_^" <br> $Short_Str= showShort($str, 4);//最初の 4 つの中国語文字をインターセプトすると、結果は次のようになります: この文字...
Echo "$Short_Str"; Function csubstr($str,$start,$len) <?PHP <br> $str="<h1>PHP</h1>"; <br> Echo "被解释过的: ".$str."<br>经过处理的:"; <br> Echo htmlentities(nl2br($str)); <br> ?> <br>
{
$strlen=strlen($str); $clen=0; for($i=0;$i {
if ( $clen>=$start+$len)
ブレーク;
if(ord(substr($str,$i,1))>0xa0) { <font face="Arial"> <?PHP <br> $a="PHP"; <br> foo(); <br> Function foo() <br> { <br> global $a;//删除这里看看是什么结果 <br> Echo "$a"; <br> } <br> ?> </font>
if ($clen> ;=$ start) $tmpstr.=substr($str,$i,2);
}
else
{
if ($clen>= $start)
$tmpstr.=substr($str,$i,1);
} } return $tmpstr; } 関数 showShort($ str,$ len) { $tempstr = csubstr($str,0,$len); if ($str $tempstr .= "... "; /終了したい内容をここで変更するだけです。 Return $tempstr; } 12: SQL ステートメントを標準化します キーワードの誤用によるエラーが発生しないように、フォームやフィールドの前に「`」を追加します。 もちろん、 などのキーワードを使用することはお勧めしません。 $Sql="INSERT INTO `xltxlm` (`author`, `title`, `id`, `content`, `date`) VALUES ('xltxlm', 'use`', 1, '条件の SQL 文字列 ', '2003-07-11 00:00:00')" "`"入力方法は?TABキーで。 13: Htmlでの文字の作り方/ PHP 形式 文字列は解釈されず、そのまま表示されます PHP コード: <?PHP $str="< h1>PHP</h1>"; Echo "解釈済み: ".$str."<br> 処理済み: "; Echo htmlentities(nl2br($str)); ?> ; 14 関数内で関数外の変数値を取得する方法 PHP コード:<code> <?PHP <🎜> ; $a="PHP"; ; foo() > エコー } ?> ;