0 レビュー
2 回答
html-PHP+Mysqlでログインした後にユーザー名が表示されない
ログイン後にログインしたユーザー名のユーザー名を表示したいのですが、以下は私のコードです。なぜ機能しないのかわかりません...3つのファイルすべてを投稿しました:
最初のファイル。 (認証が処理される場所)
auth.php
<?php
//Start session
session_start();
//Check whether the session variable SESS_MEMBER_ID is present or not
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
header("location: ../index.php");
exit();
}
?>
2番目(login_exec.php-ログインロジックが機能する場所)
<?php
//Start session
session_start();
//Include database connection details
require_once('connection.php');
//Array to store validation errors
$errmsg_arr = array();
//Validation error flag
$errflag = false;
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Sanitize the POST values
$username = clean($_POST['username']);
$password = clean($_POST['password']);
//Input Validations
if($username == '') {
$errmsg_arr[] = 'Username missing';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'Password missing';
$errflag = true;
}
//If there are input validations, redirect back to the login form
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: ../index.php");
exit();
}
//Create query
$qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
$result=mysql_query($qry);
//Check whether the query was successful or not
if($result) {
if(mysql_num_rows($result) > 0) {
//Login Successful
session_regenerate_id();
$member = mysql_fetch_assoc($result);
// $_SESSION['mem_id'] = $id;
$_SESSION['SESS_MEMBER_ID'] = $member['mem_id'];
$_SESSION['SESS_FIRST_NAME'] = $member['username'];
$_SESSION['SESS_LAST_NAME'] = $member['password'];
$role = $member['role'];
switch ($role) {
case 'user':
$redirect = '../t1.php';
break;
case 'administrator':
$redirect = '../t2.php';
break;
}
// session_write_close();
header('Location: ' . $redirect);
exit();
}else {
//Login failed
$errmsg_arr[] = 'user name and password not found';
$errflag = true;
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: ../index.php");
exit();
}
}
}else {
die("Query failed");
}
?>
3番目のコードファイル(t2.php):ユーザーがログイン後に移動する場所:
<?php
require_once('connect/auth.php');
$_SESSION['mem_id'] = $id;
mysql_query("SELECT username FROM member WHERE id=".$_SESSION['mem_id']);
?>
<!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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>TAILSHIFT MEDIA PORTAL</title>
<style type="text/css">
<!--
.style1 {
font-size: 36px;
font-weight: bold;
}
-->
</style>
</head>
<body>
<div align="right"><a href="index.php"><img src="images/logout.png" /></a></div>
<p align="center" class="style1">Welcome <u><?php echo $row['username']; ?></u></p>
<br /><br /><br />
<div align=center>
<h1>Rest Contents goes here...</h1>
</div>
</body>
</html>
ユーザーがログイン後にこの3ページ目にアクセスしたときに表示するユーザー名が必要です。
どのような変更を行う必要がありますか?
わからない
0
レビュー
答え :
解決策:
編集:この $row['username']
にはechoの前にユーザー名が含まれていると思います呼び出されている
これを置き換える必要があります:
<?php $row['username']; ?>
これで:
<?php echo $row['username']; ?>
変数の値を出力するには、echo関数を呼び出す必要があります
わからない
0
レビュー
答え :
解決策:
次の方法を使用して、自分で問題を解決しました:
2ページ目で以前に作成した$_SESSIONから、ユーザー名を保存した配列内の場所をエコーアウトしました。
ログインを処理するページ。ログインが成功すると、次のように設定されます。
$_SESSION['SESS_FIRST_NAME'] = $member['username'];
「ようこそユーザー」-ページにユーザー名が次のように表示されます:
<?php echo $_SESSION['SESS_FIRST_NAME']; ?>
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。