すべての PHP マスターの皆さん、こんにちは...誰にも迷惑をかけていなければいいのですが...私の質問が間違っていたり、このセクションにふさわしくない場合は申し訳ありません。私の英語はそれほど上手ではありません。この問題を数日間解決しようとしましたが、答えを探してみましたが、問題を解決できる解決策が見つかりませんでした。正直なところ、私は PHP の初心者であり、本当に初心者であり、あなたの指導が必要です。
すでにログイン ページ (login.php) を持っています。ユーザーがログインすると、ユーザー ページ (useracc-test.php) にリダイレクトされます。ユーザー名とパスワード セッションに基づいて個人データを表示することを想定していますが、エラーが表示されます ( 注意: 未定義のインデックス: C:\xampp のユーザー名\htdocs\eventsite\useracc-test.php 行 42
警告: mysql_fetch_array() は、パラメーター 1 がリソースであると想定します。これは、51 行目の C:\xampp\htdocs\eventsite\useracc-test.php で指定されたオブジェクト Hello, ().) です。
「useracc-test.php」にすべてのユーザーデータを表示できるため、DB接続の問題は問題ありません。唯一の問題は、ユーザーのログイン セッションに基づいて SELECTED データを表示できないことです。ユーザーが全員のデータではなく、自分のデータを取得するようにしたい。
以下はユーザーページ「useracc-test.php」です。これは、ユーザーのログインが成功した後のページであり、自分の個人データを表示することを想定しています。あなたの助けが必要.. Tq 再び.. リンダ メイ。
<?php
//useracc-test.php
/**
* Start the session.
*/
session_start();
/**
* Include our MySQL connection.
*/
// require 'lib/password.php';
require 'connect-test.php';
/*
THIS ONE WORKS FINE..BUT IT DISPLAY ALL ROWS...BUT THE ONE BELOW "$_SESSION['user_id']"
DISPLAYS ERROR
$sql = "SELECT name, telno, username FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "name: " . $row["name"]. " - telno: " . $row["telno"]. " username" . $row["username"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
*/
//THIS ONE BELOW DOES NOT WORK FINE..DISPLAY 2 ERRORS
/*Warning: mysql_fetch_array() expects parameter 1 to be resource, object given in C:\xampp\htdocs\eventsite\useracc-test.php on line 49
Hello, (). */
//Notice: Undefined index: username in C:\xampp\htdocs\eventsite\useracc-test.php on line 42
//$sql = "SELECT name, username FROM users WHERE id = " . $_SESSION['user_id'] . ;
$sql = "SELECT name, username FROM users WHERE username = '" . $_SESSION['username'] . "'";
$result = $conn->query($sql);
//$result = mysql_query($sql);
if (!$result) { // add this check.
die('Invalid query: ' . mysql_error());
}
else{
$row = mysql_fetch_array($result);
echo "Hello, " . $row['name'] . " (" . $row['username'] . ").";
}
?>
login.php
<?php
//login.php
/**
* Start the session.
*/
session_start();
/**
* Include password_compat library.
*/
require 'lib/password.php';
/**
* Include our MySQL connection.
*/
require 'connect.php';
//define variables and define to null.
$usernameError = $passwordError = "";
//If the POST var "login" exists (our submit button), then we can
//assume that the user has submitted the login form.
if(isset($_POST['login'])){
//Retrieve the field values from our login form.
$username = !empty($_POST['username']) ? trim($_POST['username']) : null;
$passwordAttempt = !empty($_POST['password']) ? trim($_POST['password']) : null;
//Retrieve the user account information for the given username.
$sql = "SELECT id, username, password FROM users WHERE username = :username";
$stmt = $pdo->prepare($sql);
//Bind value.
$stmt->bindValue(':username', $username);
//Execute.
$stmt->execute();
//Fetch row.
$user = $stmt->fetch(PDO::FETCH_ASSOC);
//If $row is FALSE.
if($user === false){
//Could not find a user with that username!
//PS: You might want to handle this error in a more user-friendly manner!
$usernameError = "Invalid username. Username is required";
$passwordError = "Invalid password. Password is required";
} else{
//User account found. Check to see if the given password matches the
//password hash that we stored in our users table.
//Compare the passwords.
$validPassword = password_verify($passwordAttempt, $user['password']);
//If $validPassword is TRUE, the login has been successful.
if($validPassword){
//Provide the user with a login session.
$_SESSION['user_id'] = $user['id'];
$_SESSION['logged_in'] = time();
//Redirect to our protected page, which we called useracc.php
header('Location: useracc-test.php');
exit;
} else{
//$validPassword was FALSE. Passwords do not match.
$passwordError = "Invalid password. Password is required";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
<style>
.error {
color: #CB1313;
font-family:arial;
font-size: 10pt; }
</style>
</head>
<body>
<h1>Login</h1>
<form action="login.php" method="post">
<label for="username">Username</label>
<input class="input" name="username" maxlength="50" input type="text" type="text" value="" autocomplete="off" > <span class="error">* <?php echo $usernameError; ?></span> <br>
<label for="password">Password</label>
<input class="input" name="password" maxlength="16" input type="password" type="text" value="" autocomplete="off" > <span class="error">* <?php echo $passwordError; ?></span><br>
<input type="submit" name="login" value="Login">
</form>
</body>