因此,我试图将一些会话变量输入数据库,并且成功插入了所有行,但$ _SESSION ['organisationId']除外。一些上下文:一个用户以下面的代码段中给出的网址登录到一个网址,我得到了organisationId,然后在创建帐户时希望为该用户分配该organizationId-作为一种“邀请系统” 。
//这是我正在使用的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";
}
?>
最佳答案
这就是问题所在。
输入链接http://thisapp.com/login.php?competitionId=51da7ed4d686a&organisationId=51d81cab92709时,您具有organizationId,并将其保存在会话中。但是表单的目标只是login.php。提交表单时,URL中没有OrganisationId,因此session变量将被null覆盖。
解决方法是:
$_SESSION['competitionId'] = isset($_GET['competitionId']) ? $_GET['competitionId'] : $_SESSION['competitionId'];
$_SESSION['organisationId'] = isset($_GET['organisationId']) ? $_GET['organisationId'] : $_SESSION['organisationId'];
或者,您可以使用if语句。