无法找出$_SESSION['x']将注册表单数据存储到会话的位置


Can't figure out where $_SESSION['x'] goes to store registration form data to session

我要疯了,试图学习如何使用会话来存储自定义字段的值在我的registration_form.php,所以我可以调用其他页面上的数据。我读过各种各样的网站,但似乎没有人解释我到底应该把代码捕获的数据。我有两个自定义注册字段,我添加到一个脚本(生物和displayname)。我尝试在注册表单的顶部和底部以及register.php(下面的两个脚本)上插入此代码。

将这些字段存储到会话的代码在哪里?我知道这是错误的,因为在这一点上,我已经试着把它放在任何地方,我可以....

//registration_form.php

<?php session_start();
$_SESSION['displayname'] = $displayname;
$_SESSION['bio'] = $bio;
$author = $_SESSION['displayname'];
$bio = $_SESSION['bio'];
?>
<HTML>
<head>
<title>Practice</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/style.css" rel="stylesheet" media="screen">
</head>
<body>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<div class="logo">
<h2><?php include('db.php'); echo $logotxt; ?></h2>
</div>
<form class="form-horizontal" id="register_form" method="post">
<h2>Register</h2>
<div class="line"></div>
<div class="control-group">
<input type="text" id="inputEmail" name="email" placeholder="Email">
</div>
<div class="control-group">
<input type="text" id="inputuserid" name="username" placeholder="Username">
</div>
<div class="control-group">
<input type="text" id="displayname" name="displayname" placeholder="Display name">
</div>
<div class="control-group">
<textarea name="bio" class="textfield" id="bio" cols="25" rows="7" placeholder="Bio
(optional). Tell us about yourself."></textarea>
</div>         
<button type="submit" class="btn btn-large btn-primary btn-sign-in" data-loading-
text="Loading...">Register</button>
<a href="index.php" class="btn btn-large btn-register">Sign in</a>
<div class="messagebox">
<div id="alert-message"></div>
</div>
</form>
<?php 
// starting the session
session_start();
if (isset($_POST['Submit'])) { 
$_SESSION['displayname'] = $displayname;
$_SESSION['bio'] = $bio;
} 
?> 
//register.php

<?php
include("db.php");
$con=mysql_connect($server, $db_user, $db_pwd) //connect to the database server
or die ("Could not connect to mysql because ".mysql_error());
mysql_select_db($db_name)  //select the database
or die ("Could not select to mysql because ".mysql_error());
//prevent sql injection
$username=mysql_real_escape_string($_POST["username"]);
$displayname=mysql_real_escape_string($_POST["displayname"]);
$password=mysql_real_escape_string($_POST["password"]);
$email=mysql_real_escape_string($_POST["email"]);
$bio=mysql_real_escape_string($_POST["bio"]);
//check if user exist already
$query="select * from ".$table_name." where username='$username'";
$result=mysql_query($query,$con) or die('error');
if (mysql_num_rows($result))
{
die($msg_reg_user);
}
//check if user exist already
$query="select * from ".$table_name." where email='$email'";
$result=mysql_query($query,$con) or die('error');
if (mysql_num_rows($result))
{
die($msg_reg_email);
}
session_start();
$_SESSION['displayname'] = $displayname;
$_SESSION['bio'] = $bio;
$activ_key = sha1(mt_rand(10000,2222).time().$email);
$hashed_password = crypt($password); 
$query="insert into ".$table_name."(username,displayname,password,email,activ_key,bio)
values ('$username','$displayname','$hashed_password','$email','$activ_key','$bio')";
if (!mysql_query($query,$con))
{
die('Error: ' . mysql_error());
}

我不确定你在这里想要什么,但不应该在regiisration_form .php中的表单动作设置为register.php?

<form class="form-horizontal" id="register_form" method="post" action="register.php">

然后您的表单将被提交到register.php。您在register.php中设置Session的方式基本上是正确的。要访问其他页面中的会话值,执行以下命令:

$displayname= $_SESSION['displayname']; 
$bio=$_SESSION['bio'];