ホームページ  >  記事  >  バックエンド開発  >  Php_PHP チュートリアルでよくある問題の概要

Php_PHP チュートリアルでよくある問題の概要

WBOY
WBOYオリジナル
2016-07-21 16:08:26677ブラウズ


Php でよくある問題の概要 1: 変数を取得できないのはなぜですか

ある Web ページから別の Web ページにデータ名を POST したのに、$name を出力すると値が取得できないのはなぜですか?

PHP4.2 以降のバージョンでは、 register_globalデフォルトは off です
別のページから送信された変数を取得したい場合:

方法 1: PHP.ini で register_global を見つけて、それを on に設定します。
方法 2: この extract($_POST);extract( を先頭に置きます。 Web ページの受信 $_GET); (extract($_SESSION) の前に Session_Start() が必要であることに注意してください)。
方法 3: 変数を 1 つずつ読み取る $a=$_GET["a"];$b=$_POST[ "b"] など。この方法は面倒ですが、安全です。

2: プログラムをデバッグする

実行時に特定の変数の値を知る必要があります。これが私がやったことです。debug.php ファイルを作成します。その内容は次のとおりです:

PHP コード: ------------------------ -------------------------------------------------- -- --

Ob_Start();
Session_Start();
Echo "

";<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>Echo "
";
?>

----------------- -------------------------------------------------- - -----------

次に、php.ini で include_path = "c:/php" を設定し、このフォルダーに debug.php を置きます。
今後はすべての Web ページに追加できますこのファイルをインクルードし、取得した変数名と値を表示します。

3: セッションの使用方法

セッションに関連するすべての処理は、前に関数 session_start() を呼び出す必要があります。

セッションの値の支払いは非常に簡単です。
PHPコード:---------------------------------------------- --- ----------------------------------

Session_start();
$ Name = "これはセッションの例です";
Session_Register("Name");//次のように書かないでください: Session_Register("$Name");
Echo $_SESSION["Name"];
//その後 $ _SESSION["名前"] は " これはセッションの例です"
?>

---------------------------- ----------- -------------------------------------- ---



in php4.2 その後、セッション料金を直接支払うことができます:

PHP コード:---------------------- ---------------------------------------------------- --------

Session_Start();
$_SESSION["name"]="value";
?>

---------- ---------------------------------------------------- ---------- ----

次のようにセッションをキャンセルします:

PHP コード: ------- ---------------- ---------------------------------- ----------------

< ?php
session_start();
session_unset();
session_destroy();
?>

----- ------------------- ------------------------------- ------------------- ---


php4.2以降では、特定のセッション変数のキャンセルにバグがあります。



注:

1: Session_Start() を呼び出す前に出力を行うことはできません。たとえば、以下は間違っています。
== ========================= ==============
1 行
2 行3 行目 Session_Start();//1 行目
4 行目...
5 行目の前にすでに出力があります?>
==================== ========================


ヒント1:

「...headers selected....」が表示されるたびに、Session_Start()の前にブラウザに情報を出力することになります。 (このエラーはCOOKIEでも発生します。エラーの原因は同じです)

ヒント2:

Session_Start()がループ文の中にあり、どこに情報が出力されたのか判断するのが難しい場合
Line 1
....ここでこれはあなたのプログラムです...



2: エラーは何ですか?

警告: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
セッション ファイルの保存先パスを指定していないためです。

解決策:
(1) C ドライブにフォルダー tmp を作成します
(2) php.ini を開き、session.save_path を見つけて、session.save_path= "c:/tmp" に変更します



4: 変数を別の Web ページに転送すると、前半だけが取得されるのはなぜですか、スペースで始まるものはすべて失われます


PHP コード:---------------------- ------------ -------------------------------------- --------

< ?php
$Var="hello php";//$Var="hello php"; に変更して結果を取得してみます
$post= "receive.php?Name =".$Var;
header("location: $post");
?>

-------------------------- ------------- ------------------------- ---

receive.php コンテンツ:

PHPコード:-------------------------------------------- -------------- ------------------------------------

< ?PHP
Echo "
" ;<br>エコー $_GET["名前"];<br>エコー "
";
?>

---------------------- --- --------------------------------------------------- --- ------------------


正しい方法は次のとおりです:

PHP コード:---------------- ---------------------------------------------------- ---- ----------

$Var="hello php";
$post= "receive.php?Name=".urlencode($Var);
header ("場所: $post");
?>

------------------------------------- ---------- --------------------------------------


受信ページにいる必要はありません Urldecode() を使用すると、変数は自動的にエンコードされます


5: "?>" で終わらずに指定された長さの中国語文字をインターセプトする方法。余分な部分は "..." に置き換えられます


一般的に言えば、変数は Mysql から取得されます。まず、フィールドの長さが十分な長さであることを確認します。通常は char(200) で、これは 100 文字の漢字を保持できます。句読点を含む

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) )
ブレーク;
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;
関数 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 コード:--------------------------------- ----------- -------------------------------------- -

$str="< ;h1>PHP";
Echo "解釈されました: ".$str."
処理されました:";
Echo htmlentities(nl2br($str) ));
?>

----------------------------------------------------- -------- ----------------------------------



8: 方法関数の関数外の変数値を取得します


PHP コード:------------------------------------- --------------------------------------------

$a="PHP";
foo( );
Function foo()
{
global $a;//結果を確認するにはここを削除してください
Echo "$a";
}
? >

----------- ---------------------------------- ---------------- ------------------



9: システムがどの機能をサポートしているかを知るにはどうすればよいですかデフォルト


PHP コード:-------------------------- ----------------------------- ------------------- ------------------

$arr = get_dependent_functions() ;
関数 php() {
}
echo "
"; <br>Echo "システムでサポートされているすべての関数とカスタム関数を示します";<br>print_r($arr); <br>echo "
"; ------------------------------------------------ -- --------------------------------


10: 2 つの日付の差を比較する方法


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);
エコー " $Days Day は苦労しました^_^";
?>

--------------------------------- -------- --------------------------------------


11: アップグレードした理由 PHP の後、元のプログラムが全画面表示されました 注意: 未定義の変数:


これは、変数が未定義であることが原因で発生する警告です。
php.ini を開き、一番下にある error_reporting を見つけます。それを error_reporting = E_ALL & ~ E_NOTICE に変更します

解析エラーの場合、error
error_reporting(0) をオフにすることはできません。
エラー プロンプトをオフにしたい場合は、php.ini を開き、display_errors を見つけて、display_errors = Off に設定します。今後のエラーは表示されません。

それは error_reporting ですか?



12: ファイルを 1 つずつ追加するのは非常に面倒です。
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 を末尾に追加します

;将来的には、各 PHP ファイルは

PHP コードと同等になります: ------- ------------------------- ------------------------- ------------------------

Include "auto_prepend_file.php" ;

....//これはあなたのプログラムです


Include "auto_append_file.php";
?>

-------- ------------------------ ------------------------ -------------------------




13: PHP を使用してファイルをアップロードする方法



PHP コード:----- ------------------------- ------------------------ -----------------


ファイルフォームをアップロード
ファイルを選択してください:

;br>



$upload_file=$_FILES[ 'upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file ']['name'];

if($upload_file){
$file_size_max = 1000*1000;//1M 制限ファイルアップロード最大数Capacity (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 "ファイルのコピーに失敗しました";
終了;
}

}

Echo "

ファイルをアップロードしました:";
echo $_FILES['upload_file']['name'];
echo "
";
//クライアントマシンファイルの元の名前。

Echo "ファイルの MIME タイプは次のとおりです:";
echo $_FILES['upload_file']['type'];
//ファイルの MIME タイプ。ブラウザはこの情報をサポートする必要があります。 「画像/GIF」として。
echo "
";

Echo "アップロード ファイル サイズ:";
echo $_FILES['upload_file']['size'];
//アップロードされたファイルのサイズ (バイト単位)。
echo "
";

Echo "ファイルがアップロードされた後、次のように一時的に保存されます:";
echo $_FILES['upload_file']['tmp_name'];
//ファイルはに保存されますアップロード後のサーバーの一時ファイル名。 &Echo "& lt; br & gt;";


$ erroe = $ _ files ['upload_file'] ['error'];
switch ($ erroe) {
case 0:
echo 成功しました "; Break;
case 1:
を通して
ケース 3: c エコー 「ファイルはアップロードされません」
; }

-------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------------------------------------------- --------------- -------------------



14: GD ライブラリの設定方法


以下は私の設定プロセスです
1: dos コマンドを使用します (手動でも操作できます。dlls フォルダー内のすべての dll ファイルを system32 ディレクトリにコピーします) c:phpdlls*.dll c:windowssystem32 をコピーします
2: php.ini を開きます
Set extension_dir = "c:/php/extensions/";
3:
extension= php_gd2.dll; php_gd2.dll がない場合は、php_gd.dll も同様です。ファイルは存在します c:/php/extensions/php_gd2.dll
4: 次のプログラムを実行してテストします

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, "単純なテキスト文字列", $text_color);
imagepng ($im);
?>

-- --------------------------------- ------------------- -------------------------------



ここをクリックして結果を表示



15: UBB とは何ですかcode


UBB コードは HTML の変種であり、Ultimate Bulletin Board (海外の BBS プログラムであり、中国の多くの場所でもこのプログラムを使用しています) で使用される特別な TAG です。
HTML の使用が禁止されている場合でも、フォーラムで HTML の使用が許可されている場合でも、それを実現するために UBBCode を使用することはできますか?テストを直接実行します


16: MySQL ユーザーとパスワードを変更したいです

まず第一に、ほとんどの場合、MySQL を変更するには mysql の root 権限が必要であることを宣言する必要があります。
したがって、通常のユーザーは、次の場合を除き、パスワードを変更できません。管理者に要求します。

方法 1
phpmyadmin を使用します。これは最も簡単で、mysql ライブラリのユーザー テーブルを変更します。
ただし、PASSWORD 関数を使用することを忘れないでください。

方法 2
mysqladmin を使用します。これは、前述した特殊なケースです。
mysqladmin -u root -p passwd mypasswd
このコマンドを入力した後、root の元のパスワードを入力する必要があります。root のパスワードは mypasswd に変更されます。
コマンド内の root を自分のユーザー名に変更すると、自分のパスワードを変更できます。
もちろん、mysqladmin が mysql サーバーに接続できない場合、または mysqladmin を実行できない場合、
このメソッドは無効です。
そして、mysqladmin はパスワードをクリアできません。

次のメソッドは mysql プロンプトで使用され、mysql root 権限が必要です:
方法 3
mysql> INSERT INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey', PASSWORD(' biscuit'));
mysql> フラッシュ権限
正確に言うと、これはユーザー名 jeffrey とパスワード biscuit を持つユーザーを追加することです。
「MySQL 中国語リファレンスマニュアル」にこの例があったので書き出してみました。
PASSWORD 機能を使用してから、FLUSH PRIVILEGES を使用することに注意してください。

方法 4
REPLACE ステートメントを使用する点を除き、方法 3 と同じです
mysql> REPLACE INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit') );
mysql> FLUSH PRIVILEGES

方法 5
SET PASSWORD ステートメントを使用します、
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
ただし、PASSWORD() 関数も使用する必要があります。 FLUSH PRIVILEGES を使用する必要はありません。

方法 6
GRANT... IDENTIFIED BY ステートメントを使用する
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit'
ここでは PASSWORD() 関数は不要です。フラッシュ権限を使用します。

注: PASSWORD() は、Unix パスワード暗号化と同じ方法でパスワード暗号化を実行しません。


17: 彼がどの Web サイトからこのページに接続したのか知りたいです



PHP コード:-------------------------- -------------------------------------------------- ----

//出力するにはスーパー接続経由で入力する必要があります
Echo $_SERVER['HTTP_REFERER'];
?>

----------- ---------------------------------------------------- --------------- ------------------



18: にデータを入れるときに注意すべきことは何ですかデータベースを取り出してページに表示します

データベースに入るとき
$str=addslashes($str) ;
$sql="`タブ` (`コンテンツ`) 値('$str')"に挿入します。
ライブラリから出る時
$str=stripslashes($str);
表示する時
$str=htmlspecialchars(nl2br( $str)) ;





19: 現在のアドレスバーの情報を読み取る方法



PHP コード: ----------------------- ----------------------- ------------------------- -------

$s="http://{ $_SERVER['HTTP_HOST']}:{$_SERVER["SERVER_PORT"]}{$_SERVER['SCRIPT_NAME']} ";
$se='';
foreach ($_GET as $key => $value) {
$se.=$key."=".$value."&"
}
$se=Preg_Replace ("/(.*)&$/","$1",$se); ?$se="?".$se:"";
エコー $s."?$se"
? ------------------------------ -------------------- --------------




20: 戻るボタンをクリックしました。なぜ前に入力したのですか? 不足しています

これは、セッションを使用したためです。
解決策:

PHP コード:-------------------------------- -------------- ------------------------------------

session_cache_limiter('プライベート、必須-再検証');
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","あなたの IP は".$ip) ; // IP を表示します
ImagePng($img);
imagecreatefrompng($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 geten v("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 != "不明") {
$ip1 を返す
}
elseif (isset($ip2) && $ip2 != "なし" && $ip2 != "不明") {
return $ip2
}
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
return $ip3;
else {
return "none";

; -------------------------------------- ----------- ----------------------------



23: 開始方法データベースは 3 日以内にすべてのレコードを読み取ります

まず、時刻を記録するにはテーブルに 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、ホームページに文字化けが表示される


方法1:
AddDefaultCharset ISO-8859-1をAddDefaultCharset offに変更

方法2:
AddDefaultCharset GB2312
=============== ===== ======================================
ヒント:
GB2312 になります。みんながコードを投稿するときに説明しました Cheng??????

このように変更すると、

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314770.html技術記事 Php 1 でよくある問題の概要: 変数名を取得できないのはなぜですか? ある Web ページから別の Web ページにデータ名を POST したのに、PHP 以降のバージョンで $name を出力すると値が取得できないのはなぜですか? 4.2 登録...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。