0

手伝ってくれませんか。私は PHP の初心者で、まだ言語の基礎を学んでいます。現在、セッションの作成方法を学んでいます。本の例の 1 つを試してみると、どうやらバグがあるようです。HTML フォームは次のようになります。

<form action="session_registration_form_script.php" method="post">
    <label for="name">Name:</label>
    <input type="text" name="name" />
    <label for="email">Email:</label>
    <input type="text" name="email" />
    <input type="submit" value="Register" />
</form>

そしてPHPスクリプトは次のようなものです:

<?php

    // Initialize session data
    session_start();

    /*
     * If the user is already registered, display a 
     * message letting them know.
     */

     if(isset($_SERVER['username'])) {
         echo "You're already registered as $_SESSION[username]";
     }

     // Checks if the form was submitted
     else if($_SERVER['REQUEST_METHOD'] == 'POST') {

         /*
          * If both the username and email fields were filled
          * out, save the username in a session variable and 
          * output a thank you message to the browser. To 
          * eliminate leading and trailing whitespace, we use the 
          * trim() function
          */
          if(!empty(trim($_POST['username']))
          && !empty(trim($_POST['email']))) {

              // Store escaped $_POST values in variables 
              $uname = htmlentities($_POST['username']);
              $email = htmlentities($_POST['email']);

              $_SESSION['username'] = $uname;
              echo "Thanks for registering! <br />",
              "Username: $uname <br />",
              "Email: $email <br />";
          }

          /*
           * If the user did not fill out both fields, display 
           * a message letting them know that both fields are 
           * required for registration
           */

           else {
               echo "Please fill out both fields! <br />";
           }
     }

     // If the form was not submitted, dispalys the HTML form

     else {

?>

<?php } ?>

両方のファイルをブラウザーに出力すると、ブラウザーは次のように報告します。致命的なエラー: 'ファイルのパス' とコードの行の書き込みコンテキストで関数値を使用できません。

これを修正して助けてください。私にとって役立つと思われるものを自由に追加してください。前もって感謝します...

4

2 に答える 2

2

あなたのコードにはいくつかの問題があります。

 if(isset($_SERVER['username'])) {
     echo "You're already registered as $_SESSION[username]";
 }

する必要があります

 if(isset($_SESSION['username'])) {
     echo "You're already registered as ".$_SESSION['username'];
 }

また、フォーム フィールドが呼び出されたときに$_POST呼び出される変数を探しています。usernamename

あなたが見ている実際のエラーに関しては、それはあなたが一緒に使用している方法のためですempty.2trimつを別々にチェックする必要があります. 例えば

$uname = isset($_POST['username']) ? trim($_POST['username']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
if(!empty($uname)  && !empty($email)) {
于 2013-05-16T22:47:11.390 に答える
0

変数を受け取った後、変数が空であるかどうかを確認する前に、グローバル変数をトリミングすることをお勧めします

        $uname = trim($_POST['username']);
        $email = trim($_POST['email']);
      if(!empty($uname)  && !empty($email)) {
    //if(!empty($_POST['username']) && !empty($_POST['email']))
    //{

          // Store escaped $_POST values in variables 
          $uname = htmlentities($_POST['username']);
          $email = htmlentities($_POST['email']);

          $_SESSION['username'] = $uname;
          echo "Thanks for registering! <br />",
          "Username: $uname <br />",
          "Email: $email <br />";
      }
于 2013-05-16T22:40:21.690 に答える