1

さて、コードは長くて退屈ですが、途方に暮れています。

基本的にフォームがあり、フォームはオブジェクトの配列に入れられます。オブジェクト名は Person() です。

ただし、フォームに正しく入力していない場合は、「メールを空白のままにすることはできません」などのエラーが表示されます。

問題は、フォームにエラーがあると、ページが特定の場所で死んでしまうことです。

この時点で、オブジェクトは次のようになります。

Array
(
    [0] => Person Object
        (
            [firstname:Person:private] => Richard
            [lastname:Person:private] => Gert
            [gender:Person:private] => 
            [age:Person:private] => 
            [add1:Person:private] => 
            [add2:Person:private] => 
            [add3:Person:private] => 
            [add4:Person:private] => 
            [postcode:Person:private] => 
            [country:Person:private] => 
            [phone:Person:private] => 3299394
            [email:Person:private] => right@left.com
            [price:Person:private] => 67.5
            [additional:Person:private] => 
            [active:Person:private] => 1
            [ref:Person:private] => c75af
            [ticketref:Person:private] => 0acbc
            [org:Person:private] => RA
            [type:Person:private] => wc
        )

)

そして、それは結構です。ページはこの時点で死んでいます:

<tr><td class="top left" width="200px">First Name</td>
<td class="top right">
<input type="text" class="txt" name="firstname" value="<?=$people[0]->firstname();?>">
</td></tr>

firstname の関数は次のとおりです。

function firstname()        {if($this->firstname) return($this->firstname);}

person クラスの他のすべての関数と同じです。

しかし、出力するファーストネームがある場合でも、ここで失敗するのはなぜですか? エラーは発生しません。実際、この時点での HTML は次のようになります。

<tr><td class="top left" width="200px">First Name</td><td class="top right">

単語を書き込む前であっても、ページは停止または停止します<input...

理由がわかりません。

*エラー報告は確実にオンになっています。また、フォームが正しく入力されている場合 (電子メール、電話番号など)、コードは問題なく実行されます。オブジェクトが満たされ、ユーザーはステージ 2 に移動します。 *

4

2 に答える 2

2

短いタグ?

通常、短いタグを使用することはお勧めできません (php 5.3 から自動的にオフになります。php.ini で有効にする必要があります: 短いタグが有効になっていることを確認しますか?、次のリンクも参照してください: PHP echo対 PHP ショートタグ

それ以外の場合は、一般的に受け入れられている php 5.3+ の方法で書き直すことは悪い考えではないかもしれません。

<?php echo $people[0]->firstname(); ?>

エラー報告

これで十分な回答が得られない場合は、php でエラー レポートを有効にしてみてください。

その場で(スクリプトの最初のどこかに)

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

php.ini 内(おそらく php と cli では異なる)

error_reporting = E_ALL
display_errors = 1

詳細については、次を参照してください。

アパッチログ

他のすべてが失敗した場合は、apache ログ (エラー ログ) を使用してみてください。ブラウザーに記録されていないエラーが、apache (または lighttp/nginx/iss) エラー ログに記録される場合があります。

于 2013-07-05T12:05:47.363 に答える