0

そのため、いくつかのセッション変数をデータベースに入力しようとしていますが、$_SESSION['organisationId'] を除くすべての行を正常に挿入しています。いくつかのコンテキスト: ユーザーは、以下のスニピットで指定された URL に到達し、organisationId を取得し、アカウントを作成するときにそのユーザーにその organisationId を割り当てたいと考えています。一種の「招待システム」として機能します。 .

// これは私が使用している URL です: http://thisapp.com/login.php?competitionId=51da7ed4d686a&organisationId=51d81cab92709

   <?php
      session_start();
      ob_start();
      ini_set('display_errors',1);
      ini_set('display_startup_errors',1);
      error_reporting(-1);

       include('db.php');

    $_SESSION['competitionId'] = $_GET['competitionId'];
    $_SESSION['organisationId'] = $_GET['organisationId'];

    <h4>Create your Account</h4>

    <form action="login.php" method="post" name="acceptinvite">
        name: <input type="text" name="createname"><br>
        email: <input type="text" name="createemail"><br>
        password: <input type="password" name="createpassword"><br>
        <input type="submit" value="Create Account">
    </form>

    <?php

    if (isset($_POST["createname"]) && !empty($_POST["createname"])) {

        //define variables
        $name = mysql_real_escape_string($_POST['createname']);
        $email = mysql_real_escape_string($_POST['createemail']);
        $password = mysql_real_escape_string($_POST['createpassword']);
        $teamLeader = 0;
        $organisationId = mysql_real_escape_string($_SESSION['organisationId']);
        $orgName = mysql_real_escape_string($_SESSION['orgName']);

        //finish registering the user
        $acceptInviteTeam = ("INSERT INTO `users` (`organisationId`, `name`, `email`, `password`, `isTeamLeader`) VALUES ('$organisationId', '$name', '$email', '$password', '$teamLeader')");
        $result = mysql_query($acceptInviteTeam)  or die (mysql_error());
    }

    else {
        echo "Fill out the form and use the correct credentials";
    }


    ?>
4

1 に答える 1

0

これが問題です。リンクhttp://thisapp.com/login.php?competitionId=51da7ed4d686a&organisationId=51d81cab92709を入力すると、organisationId があり、それをセッションに保存します。しかし、フォームのターゲットは単純に login.php です。フォームを送信すると、URL に組織 ID がないため、セッション変数が null で上書きされます。これは修正です:

$_SESSION['competitionId'] = isset($_GET['competitionId']) ? $_GET['competitionId'] : $_SESSION['competitionId'];
$_SESSION['organisationId'] = isset($_GET['organisationId']) ? $_GET['organisationId'] : $_SESSION['organisationId'];

または、if ステートメントを使用することもできます。

于 2013-07-09T08:27:52.987 に答える