2011-07-11 13 views
0

私はひどくに簡素化することができるerror.phpファイルがあります:ちょうどerror.phpに移動するには、「通常の使用」ではありませんのZend:PHPページで未定義の変数

<? 

    if (!isset($error)) 
    $error = "Unspecified Error"; 

    echo "Error: $error"; 

?> 

を。予想通り:ユーザーが、その後、彼らは単に「未指定エラーエラー」を取得しますerror.phpするナビゲートを行う場合は、言っ

$dbh = mysql_connect($host, $user, $pass); 

if (!$dbh) 
{ 
    $error = "Can't connect to MySQL: " . mysql_error(); 
    include('error.php'); 
    exit(); 
} 

:むしろ、私のような何かをするだろう。

私のすべてのコードが動作していて、エラーページが表示され、期待どおりに動作しますが、Zendは$ errorがライン上で定義されていないと訴えています:if (!isset($error))

私のデザインパターンはひどいですが、この場合はすばやく汚れたものを一緒に投げかけています。

+0

それは未定義ですが、それは 'ISSET()'本当に何のためにあるのかないのですか? – alex

+0

@alexまあ、はい...そうだと思います。私のコードは機能していないので、私は尋ねていませんでした。私はZendが私に警告を与えているので尋ねていた。現時点では、私は本当に問題ではないので、無視しています。 – Ozzah

答えて

1

良いアイデア、代わりに関数を作成:

function output_error($error = NULL) 
{ 
    if(!$error) $error = "Unspecified Error"; 
    echo "Error: $error"; 
} 

それは、Zendの問題を取り除くの両方の利点を持っている、とあなたはMUCHより良いデザインを持っています。その後:

if (!$dbh) 
{ 
    include('error.php'); 
    output_error("Can't connect to MySQL: " . mysql_error()); 
    exit(); 
} 
+0

私の_actual_heart.php(例として入れた単純化されたものではありません)でもhead、stylesheets、およびjavascriptを含む完全なhtmlエラーページを出力しますか?ちなみに、 – Ozzah

+0

+1。私はこれがこれまでの唯一の適切な答えだと思います。 – Ozzah

+0

下の '<?php}'にあるページの<?php function output_errors($ err){?> ' – cwallenpoole

-2

これを試す: if (!isset(@$error))

+1

エラーを抑止することは決して良い考えではありません。 -1。 –

0
$dbh = mysql_connect($host, $user, $pass); 

if (!$dbh){ 
    $error = "Can't connect to MySQL: " . mysql_error(); 
    if(!include('error.php'){ 
     echo $error; 
     exit(); 
    } 
}