2011-07-27 18 views
1

私はPHPの初心者です。引数が空の場合はメッセージを表示する静的メソッドを作成します。そうでない場合は、指定されたメッセージを後で使用できるように静的変数に設定します。しかし、私は、メッセージを設定するメソッドを呼び出し、メッセージを表示する別のページでそれを呼び出します。何も現れません。ここでPHP OOPを使用してWebページを介してメッセージを送信する

は、この "session.php" のコードの私の一部です:

class Session { 

      public static $message; 


      public static function notify($message = ""){ 
       if(!empty($message)){ 
        self::$message = $message;      
       } else {       
        return self::$message; 
       } 
      } 
} 

    $session = new Session(); 

"add_user.php":

<?php  
    require_once '../helper/session.php';  
?> 

<?php 
    if (isset($_POST["submit"])) {   

     $user->username = $_POST["username"]; 
     $user->password = $_POST["password"]; 
     $user->first_name = $_POST["first_name"]; 
     $user->last_name = $_POST["last_name"]; 
     if($result = $user->add_user()){ 
      Session::notify("New user added"); 
      redirect_to("../view/login.php"); 
     } else { Session::notify("Cannot add new user"); } 

    } 
?> 

"login.php":

<?php 
    require_once "../control/add_user.php"; 
?> 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
     <link rel="stylesheet" href="../stylesheet/login.css" /> 
     <title>Welcome to Harmony</title> 
    </head> 

    <body> 
     <header> 
      <h2>Harmony</h2> 
     </header> 

     <section> 
      <div id="formStyle"> 
       <h3>Login or Signup:</h3> 
       <form action="login.php" method="post"> 

        <p><label for="username">Username: </label> 
         <input type="text" name="username" value="" placeholder="Username"/></p> 

        <p><label for="password">Password: </label> 
         <input type="text" name="password" value="" placeholder="Password"/></p> 

        <input type="submit" name="submit" value="Submit" /> 
        <input type="button" name="sign_up" value="Sign up" onClick="parent.location='add_user.php'"> 
       </form> 
          <?php echo Session::notify(); ?> 
      </div> 
     </section> 
    </body> 
</html> 

答えて

2

間でデータを追跡するために、セッション変数を使用する必要がありますか? 実際のセッションで変数を取得して設定するには、さらに2つのメソッドを作成する必要があります。リダイレクト後は、スクリプトの実行時にのみ保存されるため、メッセージは消えます。

function set_notification($message) { 
$_SESSION['notification'] = $message; } 
function get_notification() { 
if(!empty($_SESSION['notification'])) { 
return $_SESSION['notification']; } 

そのような何か:)

もちろん

は、動作するようにセッションのために、あなたは、スクリプトの先頭でのsession_start()の呼び出しを行う必要があります。それらについてもっと読むhere

1

HTTPは本質的には何も共有されていないため、あるリクエストで行うことは他のリクエストでは利用できません。これらのメッセージを保持するには、共有データストアを使用する必要があります。

データベース、memcache、サーバー上のテキストファイル(1台のサーバー上で動作し、複数の負荷分散はしていないと仮定します)はすべて選択肢です。

クッキーをクライアント側で使用すると、少量のデータを永続化できます。ただし、(暗号化を使用しない)安全なソリューションではなく、クッキーに保存できるデータ量には限りがあります。

関連する問題