Php 在登录时创建会话并从MySQL创建变量
我正在努力从我的数据库中进行选择,并将其添加到Php 在登录时创建会话并从MySQL创建变量,php,mysql,session,Php,Mysql,Session,我正在努力从我的数据库中进行选择,并将其添加到$\u会话中,以便转到配置文件页面。 请注意,“$\u SESSION['user']=$email;”可以在配置文件中工作并打印,但我确信这是因为它已经将我的表单提前了 Connect.php <?php session_start(); $required = array('email', 'password'); // Loop over field names, make sure each one exists and is n
$\u会话
中,以便转到配置文件页面。请注意,“
$\u SESSION['user']=$email;
”可以在配置文件中工作并打印,但我确信这是因为它已经将我的表单提前了
Connect.php
<?php
session_start();
$required = array('email', 'password');
// Loop over field names, make sure each one exists and is not empty
$error = false;
foreach($required as $field) {
if (empty($_POST[$field])) {
$error = true;
}
}
if ($error) {
die("All fields are required.");
} else {
//CHECK POINT 1
$con = mysql_connect("**HOST**", "**DB**", "**PASSWORD**");
mysql_select_db("**DB**")or die("cannot select DB");
// username and password sent from form
$email=$_POST['email'];
$psswrd=$_POST['password'];
// To protect MySQL injection (more detail about MySQL injection)
$email = stripslashes($email);
$psswrd = stripslashes($psswrd);
$email = mysql_real_escape_string($email);
$psswrd = mysql_real_escape_string($psswrd);
$sql="SELECT * FROM **Table WHERE email='$email' and password='$psswrd'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
//fetch info & create session
$id="SELECT 'id' FROM **table**";
$_SESSION['user'] = $email;
$_SESSION['uid'] = $id;
$_SESSION['name1'] = $fname;
<?php
session_start();
$email = $_SESSION["user"];
$id = $_SESSION["uid"];
$fname = $_SESSION["name1"];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>...</head>
<body>
<div align=center><font color="#000000" face="Bodoni MT" class="ws12"><?php echo "I am ". $id. ". Contact me at ". $email ?></font></div>
</body>
</html>
...
mysql\u查询将返回一个结果集。正如solymosi所建议的,您可以使用mysql\u fetch\u assoc.将获取的数据放回数组中
因此,这将是:
$user_data_array = mysql_fetch_assoc($result);
然后,您可以将这些值分配到会话数据:
$_SESSION['user'] = $user_data_array["email"];
$_SESSION['uid'] = $user_data_array["id"];
$_SESSION['name1'] = $user_data_array["fname"];
如果这些列是正确的。您必须从数据库中获取数据(“$result”变量)。试试这个:
<?php
session_start();
$required = array('email', 'password');
foreach ($required as $field) {
if (empty($_POST[$field])) {
$error = true;
} else {
$error = false;
}
}
if (true === $error) {
die("All fields are required.");
} else {
$con = mysql_connect("**HOST**", "**DB**", "**PASSWORD**");
mysql_select_db("**DB**") or die ("cannot select DB");
$email = $_POST['email'];
$psswrd = $_POST['password'];
$email = stripslashes($email);
$psswrd = stripslashes($psswrd);
$email = mysql_real_escape_string($email);
$psswrd = mysql_real_escape_string($psswrd);
$result = mysql_fetch_assoc(mysql_query("SELECT * FROM **Table WHERE email='$email' and password='$psswrd'"));
if (!empty($result)) {
$_SESSION['user'] = $result['email'];
$_SESSION['uid'] = $result['id']; // id column name in your database
$_SESSION['name1'] = $result['name']; // name column name in your database
}
我看不到您在哪里设置$id
或$fname
-$email
,因为它来自$\u POST
,但除了计算行之外,您没有对数据库查询的结果做任何事情。$user\u data\u array=mysql\u fetch\u assoc($result)代码>@andrewsi我很抱歉我忘了在哪里删除了它,我现在已经把原来的一行放进去了$id=“从表中选择“id”;