Även om jag har hållit på med html i ett par år, så har jag aldrig vågat ge mig på php förräns nu. Så, som en mjukstart tänkte jag testa ett färdigt login-script , något som inte visade sig helt problemfritt.
Jag kan väl börja med att tillägga att jag inte modifierat scriptet ännu, med undantag för MySql-användarnamn/lösen/host.
Egentligen fungerar allt som det ska. Registrering, inloggning, utloggning, skapande av databas mm. Det enda som jäklas är att jag (när jag är inloggad) inte kommer in på exempelsidan som ger exempel på vad som händer när man har/inte har tillåtelse att visa den.
Kort och gott så fungerar det (utifrån vad jag förstått) som så att $logged_in sätts till 1 när man lyckas logga in med namn och lösen, och att sidan (exemple.php) stänger en ute endast om $logged_in står på 0. Dock har jag ingen aning varför $logged_in=1 inte sparas när jag loggar in.Det är som sagt ett färdigt script, så felet bör rimligtvis vara mitt.
Om någon har förslag på lösningar, vore jag tacksam.
<html>
<head>
<title>Register an Account</title>
</head>
<body>
<?php
if (isset($_POST['submit'])) { // if form has been submitted
/* check they filled in what they supposed to,
passwords matched, username
isn't already taken, etc. */
if (!$_POST['uname'] | !$_POST['passwd'] | !$_POST['passwd_again'] | !$_POST['email']) {
die('You did not fill in a required field.');
}
// check if username exists in database.
if (!get_magic_quotes_gpc()) {
$_POST['uname'] = addslashes($_POST['uname']);
}
$name_check = $db_object->query("SELECT username FROM users WHERE username = '".$_POST['uname']."'");
if (DB::isError($name_check)) {
die($name_check->getMessage());
}
$name_checkk = $name_check->numRows();
if ($name_checkk != 0) {
die('Sorry, the username: <strong>'.$_POST['uname'].'</strong> is already taken, please pick another one.');
}
// check passwords match
if ($_POST['passwd'] != $_POST['passwd_again']) {
die('Passwords did not match.');
}
// addslashes to session username before using in a query.
$pass = $db_object->query("SELECT password FROM users WHERE username = '".$_SESSION['username']."'");
if (isset($_POST['submit'])) { // if form has been submitted
/* check they filled in what they were supposed to and authenticate */
if(!$_POST['uname'] | !$_POST['passwd']) {
die('You did not fill in a required field.');
}
// authenticate.
if (!get_magic_quotes_gpc()) {
$_POST['uname'] = addslashes($_POST['uname']);
}
$check = $db_object->query("SELECT username, password FROM users WHERE username = '".$_POST['uname']."'");
if (DB::isError($check) || $check->numRows() == 0) {
die('That username does not exist in our database.');
}
if ($logged_in == 0) {
die('You are not logged in so you cannot log out.');
}
unset($_SESSION['username']);
unset($_SESSION['password']);
// kill session variables
$_SESSION = array(); // reset session array
session_destroy(); // destroy session.
header('Location: index.php');
// redirect them to anywhere you like.
?>
example.php skrev:
<?php
require 'db_connect.php';
// require our database connection
// which also contains the check_login.php
// script. We have $logged_in for use.
if ($logged_in == 0) {
die('Sorry you are not logged in, this area is restricted to registered members. <a href="login.php">Click here</a> to log in.');
}
// show content
$db_object->disconnect();
// when you are done.
?>
272 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91