Auth Script

tommycush

Mitglied
Hi, habe folgendes Authorization Script von sde auf meiner Seite eingebaut. Leider funktioniert es seit der Umschaltung meines Servers auf Safe Mode nicht mehr richtig. Das folgende Skript habe ich in alle meine Seiten eingebaut, die nur für eingeloggte Benutzer zugänglich sein sollen.
Es scheint als würden die Benutzerdaten nicht richtig in der Session registriert, denn sobald ich mich einlogge und dann auf weiteren "geschützten" Link klicke, muss ich mich wieder einloggen.

Schonmal vielen Dank im Voraus.

Gruß,
tommycush

PHP:
// Login & Session example by sde 
// auth.php 

error_reporting(1+4);


// start session 
session_start(); 


include('config.php');




// convert username and password from _POST or _SESSION 
if($_POST["username"]) 
{
	$username=$_POST["username"];
	$password=$_POST["password"];
}
elseif($_SESSION["username"])
{
	$username=$_SESSION["username"];
	$password=$_SESSION["password"];
}

// start and register session variables 
session_register("username");
session_register("password");

// connect to database
include("sqllogin.php");

// query for a user/pass match
$result=mysql_query("
					SELECT
						*
					FROM
						user
					WHERE
						Username='".$username."'
						AND
						Password='".md5($password)."'
					");

// retrieve number of rows resulted
$num=mysql_num_rows($result);

// print login form and exit if failed.
if($num < 1){
	session_destroy();
include('login.php');
exit;
}
 
Probier mal Folgendes:
PHP:
<?php

	// Login & Session example by sde 
	// auth.php 

	// Erhöhung der Fehlersensibilität PHPs zur Fehleranalyse
	error_reporting(E_ALL);
	ini_set('display_error', true);

	session_start(); 

	include 'config.php';
	include 'sqllogin.php';

	// convert username and password from _POST or _SESSION 
	$failure = false;
	if( isset($_POST['username']) && isset($_POST['username']) ) {
		$username = $_POST['username'];
		$password = $_POST['password'];
	} elseif( isset($_SESSION['username']) && isset($_SESSION['password']) ) {
		$username = $_SESSION['username'];
		$password = $_SESSION['password'];
	}

	if( !isset($username) || !isset($password) ) {

		$failure = true;

	} else {

		// start and register session variables 
		$_SESSION['username'] = $username;
		$_SESSION['password'] = $password;

		// query for a user/pass match
		$query = '
			SELECT
			        1
			  FROM
			        `user`
			  WHERE
			        `Username` = "'.mysql_real_escape_string($username).'"
			    AND `Password` = "'.md5($password).'"
			';
		$result = mysql_query($query);
	}

	if( $failure || mysql_num_rows($result) < 1 ) {
		session_destroy();
		include 'login.php';
		exit;
	}

?>
 
hi gumbo, deine version funktioniert. immerhin ist die seite jetzt schon mal wieder online.
die verwendung von mysql_real_escape_string ist sinnvoll. daran kann es aber nicht liegen, weil die benutzernamen keine sonderzeichen enthalten.

vielleicht liegt es daran, daß du die werte jetzt ohne session_register einfach in das array geschrieben hast. mir war nicht klar, daß das überhaupt geht. ich werd mal ein paar varianten ausprobieren, um den fehler in meinem script zu finden.

auf jeden fall danke für die mühe, das ding komplett umzuschreiben.
 
ok, das war dann die offizielle bestätigung :) thx nochmal. hab das ganze direkt auf allen webseiten geändert. wer weiß wann mein toller host es sich anders überlegt und die einstellungen wieder ändert.
 
Zurück