2011-12-31 15 views
-1

私はPHPを初めて使いこなしています。私はC++での経験がありますが、しばらくしていますので、これはリフレッシャーです。最初にインスタンス化せずにPHPでオブジェクトを使用する

私はJPMasterのPHPログインスクリプトを見つけましたが、私は登録フォームの1つの側面で混乱しています。 HTMLテーブルを見ると、オブジェクト$フォームが使用されますが、このページのどこにでもインスタンス化されていません。 'session.php'(ログインシステム内の別のファイル)を見ると、オブジェクト$ formと$ errorはログイン、登録、アカウントの編集など、使用されている関数で作成されます。

完全なログインスクリプトをダウンロードするためのリンクです。ダウンロードはコードの壁の一番下にあります。 http://www.evolt.org/node/60384

私はOOPをよく理解していたと思っていましたが、それはPHP独自のものでしたが、どこに新しいオブジェクトを作成できるのか簡単に説明できますか?オブジェクトがこのフォームで最初に使用されたので、ここで作成する必要があります。誰かが私の混乱を解消するかもしれない記事や何かの方向に私を向けることができますか?

<tr><td>Username:</td><td><input type="text" name="user" maxlength="30" value="<? echo  $form->value("user"); ?>"></td><td><? echo $form->error("user"); ?></td></tr> 

私が参照している特定の部分は、この行のような表の中にあります。私はそれがこのように書かれているので、行の横に正しいタイプのエラーメッセージが表示されることを理解しています。フォームが提出された後に情報が最初にこのページで開始されます。

<? 

include("include/session.php"); 
?> 

<html> 
<title>Registration Page</title> 
<body> 

<? 

if($session->logged_in){ 
echo "<h1>Registered</h1>"; 
echo "<p>We're sorry <b>$session->username</b>, but you've already registered. " 
    ."<a href=\"main.php\">Main</a>.</p>"; 
} 

else if(isset($_SESSION['regsuccess'])){ 
/* Registration was successful */ 
if($_SESSION['regsuccess']){ 
    echo "<h1>Registered!</h1>"; 
    echo "<p>Thank you <b>".$_SESSION['reguname']."</b>, your information has been added to the database, " 
     ."you may now <a href=\"main.php\">log in</a>.</p>"; 
} 
/* Registration failed */ 
else{ 
echo "<h1>Registration Failed</h1>"; 
echo "<p>We're sorry, but an error has occurred and your registration for the username <b>".$_SESSION['reguname']."</b>, " 
     ."could not be completed.<br>Please try again at a later time.</p>"; 
} 
unset($_SESSION['regsuccess']); 
unset($_SESSION['reguname']); 
} 

else{ 
?> 

<h1>Register</h1> 
<? 
if($form->num_errors > 0){ 
echo "<td><font size=\"2\" color=\"#ff0000\">".$form->num_errors." error(s) found</font> </td>"; 
} 
?> 
<form action="process.php" method="POST"> 
<table align="left" border="0" cellspacing="0" cellpadding="3"> 
<tr><td>Username:</td><td><input type="text" name="user" maxlength="30" value="<? echo $form->value("user"); ?>"></td><td><? echo $form->error("user"); ?></td></tr> 
<tr><td>Password:</td><td><input type="password" name="pass" maxlength="30" value="<? echo $form->value("pass"); ?>"></td><td><? echo $form->error("pass"); ?></td></tr> 
<tr><td>Email:</td><td><input type="text" name="email" maxlength="50" value="<? echo $form->value("email"); ?>"></td><td><? echo $form->error("email"); ?></td></tr> 
<tr><td colspan="2" align="right"> 
<input type="hidden" name="subjoin" value="1"> 
<input type="submit" value="Join!"></td></tr> 
<tr><td colspan="2" align="left"><a href="main.php">Back to Main</a></td></tr> 
</table> 
</form> 

<? 
} 
?> 

</body> 
</html> 

答えて

3

あなたはsession.phpページの一番下を見れば、あなたはこの表示されます:ファイルがinclude() PHPでD」、任意の変数/オブジェクト定義された/されているとき

$session = new Session; 

/* Initialize form object */ 
$form = new Form; 

がいることを忘れないでくださいそのファイルでインスタンス化されているのは、include()ディレクティブの範囲内で行われます。実際には、これらの2つのオブジェクトは別のファイルにありますが、文字通り自分のスクリプトの一部であるかのように扱われ、同じスコープレベルにあります。

+0

正確に。 'include()'を使うと、インクルードされたファイルのすべてのコードがコピーされ、インクルードファイルに貼り付けられているかのようになります。 –

+0

ありがとう、私は$ form = new Formを見逃したと思う。 session.phpページにあります。私が言ったように、それは私が完全に私の心を滑り込ませるようにプログラミングを行って以来、しばらくしています。 – user1123815

+0

私は別のフォームでオブジェクトを初期化して作業していたフォームを更新しましたが、完全に機能しました。再度、感謝します! – user1123815

関連する問題