【发布时间】:2015-10-22 06:01:26
【问题描述】:
我是 PHP 世界的新手,已经研究了好几天,但似乎卡住了。
我正在尝试设置一个小型网站来充当客户帐户区域,并在后端使用 MySQL 数据库。
我有一个带有登录表单的网页,用户可以在其中输入用户名和密码。有一个 php 脚本检查 SQL 数据库以查看是否有匹配项,如果有则将它们重定向到帐户页面。我在网上找到了一个示例脚本,我用它来创建它,这部分效果很好。
我正在尝试更进一步,并在网页上显示来自匹配 SQL 记录的数据。从我所做的研究看来,最好的方法是将会话变量传递到帐户页面。
这是我的设置
第 1 页 - index.php 这是一个登录页面,其中包含输入用户名和密码的表单。提交时,它运行 checklogin.php
第 2 页 - checklogin.php
<?php
session_start();
$host="localhost:3306"; // Host name
$username="**********"; // Mysql username
$password="**********"; // Mysql password
$db_name="galactek_myecl"; // Database name
$tbl_name="clients"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Define $myusername and $mypassword
$myusername=$_POST['username'];
$mypassword=$_POST['password'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// set variables
$_SESSION['office_name'] = mysql_query("SELECT office FROM $tbl_name WHERE username='$myusername' and password='$mypassword'");
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("username");
session_register("password");
header("location:myecl.php");
}
else {
header( 'Location: http://www.galactek.com/support/offmaint.html' );
}
?>
第 3 页 - myecl.php 这是我想显示该数据的页面。目前我试图只显示办公室名称,但它一直显示为 0。如果我将办公室名称硬编码到 checklogin.php 页面上的变量中,它不会遇到问题。
<?php
session_start();
//if(!session_is_registered(myusername)){
// header("location:index.php");
// }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="en-us" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>
<body>
<p>You're HERE!</p>
<?php
echo $_SESSION['office_name']
?>
</body>
</html>
我相当肯定我忽略了一些东西。我对 PHP 的了解不多,无法区分问题所在。任何帮助将不胜感激。
【问题讨论】:
-
试试
$_SESSION['office_name']看看它包含什么。因为您正在为它分配资源。 -
我会试试
var_dump($_SESSION['office_name']);这样他就能看到一切。 -
你需要从资源中获取结果。
-
有疑问时
var_dump()它。 -
如果可以的话,你应该stop using
mysql_*functions。它们不再被维护并且是officially deprecated。改为了解 prepared statements,并考虑使用 PDO,it's really not hard。
标签: php mysql variables session