Ich folgte this guide, weil ich versuche, herauszufinden, wie eine Anmeldesitzung funktioniert, aber sobald ich mich anmelde, bekomme ich einen Fehler von meinem Browser, dass mein ServerZu viele Weiterleitungen mit Login-Sitzung Beispiel
umgeleitet Sie zu oft.
Ich glaube, das Problem mit session.php ist denn wenn ich session.php herausnehmen und alle Familienangehörigen in meinem anderen Code, es funktioniert ganz gut.
<?php
//Establishing Connection with Server by passing
//server_name, user_id and password as a parameter
$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
//Selecting Database
$db = mysqli_select_db($connection, DB_NAME);
session_start(); //starting session
//storing session
$user_check = $_SESSION['login_user'];
//SQL Query To Fetch Complete Information of User
$ses_sql = mysqli_query($connection, "SELECT StoreID FROM Store WHERE StoreID='$user_check'");
$row = mysqli_fetch_assoc($ses_sql);
$login_session = $row['StoreID'];
if(!isset($login_session)){
mysqli_close($connection); //Closing connections
header('Location: fakeindex.php'); //Redirecting to Home Page
}
?>
Es gibt es eine Vielzahl von anderen Nutzern über das gleiche Problem beschweren, aber der Autor schreibt sich nur ab und/oder ignoriert sie. Was ist das Problem?
fakeindex.php
<?php
include('login.php'); // Includes Login Script
if(isset($_SESSION['login_user'])){
header("location: profile.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Login Form in PHP with Session</title>
</head>
<body>
<div id="main">
<h1>PHP Login Session Example</h1>
<div id="login">
<h2>Login Form</h2>
<form action="" method="post">
<label>UserName :</label>
<input id="name" name="username" placeholder="username" type="text">
<label>Password :</label>
<input id="password" name="password" placeholder="**********" type="password">
<input name="submit" type="submit" value=" Login ">
<span><?php echo $error; ?></span>
</form>
</div>
</div>
</body>
login.php
<?php
session_start(); // Starting Session
$error=''; // Variable to Store Error Message
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password'])) {
$error = "Username or Password is invalid";
}
else {
require_once("db_const.php");
// Define $username and $password
$username=$_POST['username'];
$password=$_POST['password'];
//Establishing connection with server by passing
//server_name, user_id and password as a parameter
$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if (mysqli_connect_errno()) {
printf("Connection to the database failed: %s\n", mysqli_connect_errno());
}
//To Protect MySQL injection for Security purpose
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysqli_real_escape_string($connection, $username);
$password = mysqli_real_escape_string($connection, $password);
//Selecting Database
$db = mysqli_select_db($connection, DB_NAME);
//SQL query to fetch information of registered users and finds user match.
$query = mysqli_query($connection, "SELECT * FROM Store WHERE StoreID='$username' AND StorePassword='$password'");
$rows = mysqli_num_rows($query);
if ($rows == 1) {
$_SESSION['login_user'] = $username; //Initializing session
header("location: profile.php"); //Redirecting to other page
}
else {
$error = "Username or Password is invalid";
}
mysqli_close($connection); //Closing connection
}
}
?>
profile.php
<?php
include('session.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>Your Home Page</title>
</head>
<body>
<div id="profile">
<b id="welcome">Welcome : <i><?php echo $login_session; ?></i></b>
<b id="logout"><a href="logout.php">Log Out</a></b>
</div>
</body>
</html>
logout.php
<?php
session_start();
if(session_destroy()) {//Destroying all sessions
header("Location: fakeindex.php"); //Redirecting to home page
}
Haben Sie Header in anderen Dateien? und/oder ein Mod Neuschreiben? oder beinhaltet, könnte alles wirklich sein. Sie sollten auch einen 'exit;' für Header hinzufügen. –
@ Fred-ii- Ja, das tue ich. Ich wollte sie teilen, aber im Wesentlichen habe ich den Code im Hyperlink-Tutorial kopiert und eingefügt. Die einzigen Dinge, die ich änderte, waren einige veraltete "mysql" - und "mysqli" -Funktionen zu aktualisieren. – 8protons
Nun, Sie gehen, und es könnte eine "logische" Sache hier sein. Ich habe meinen obigen Kommentar bearbeitet, um nach jedem Header 'exit;' hinzuzufügen, ansonsten könnte Ihr Code weiterhin ausgeführt werden. Vielleicht gibt es eine bedingte Aussage, die irgendwo weg ist. Schwer zu sagen, ohne alles zu sehen und wie alles zusammen funktioniert. –