Vinnaren i pepparkakshustävlingen!
2016-11-05, 00:48
  #1
Medlem
Tjena!

Mötte på ett problem i php-koden och under denna linje 54 så lyder:

Kod:
if ($userInfo['status'] == 0)

Hela koden:

Kod:
if (!($user -> LoggedIn()))
{
	if (isset($_POST['loginBtn']))
	{
		$username = $_POST['username'];
		$password = $_POST['password'];
		$errors = array();
		if (!ctype_alnum($username) || strlen($username) < 4 || strlen($username) > 15)
		{
			$errors[] = ' Användarnamn måste vara alfanumeriska och 4-15 tecken.';
		}
		
		if (empty($username) || empty($password))
		{
			$errors[] = ' Var god fyll i alla fält.';
		}
		
		if (empty($errors))
		{
			$SQLCheckLogin = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username AND `password` = :password");
			$SQLCheckLogin -> execute(array(':username' => $username, ':password' => SHA1($password)));
			$countLogin = $SQLCheckLogin -> fetchColumn(0);
			if ($countLogin == 1)
			{
				$SQLGetInfo = $odb -> prepare("SELECT `username`, `ID` FROM `users` WHERE `username` = :username AND `password` = :password");
				$SQLGetInfo -> execute(array(':username' => $username, ':password' => SHA1($password)));
				$userInfo = $SQLGetInfo -> fetch(PDO::FETCH_ASSOC);
				if ($userInfo['status'] == 0)

Mitt error är alltså "if ($userInfo['status'] == 0)" enligt WAMP.
Hur löser jag detta så det inte blir ett error? Har fastnat totalt!
Citera
2016-11-05, 01:11
  #2
Medlem
Kolla din select igen, och jämför den med arrayen du försöker läsa ifrån. Du hämtar ju inte ut den columnen.
Citera
2016-11-05, 01:21
  #3
Medlem
Citat:
Ursprungligen postat av einand
Kolla din select igen, och jämför den med arrayen du försöker läsa ifrån. Du hämtar ju inte ut den columnen.

Jo..

Kod:
if (!($user -> LoggedIn()))
{
	if (isset($_POST['loginBtn']))
	{
		$username = $_POST['username'];
		$password = $_POST['password'];
		$errors = array();
		if (!ctype_alnum($username) || strlen($username) < 4 || strlen($username) > 15)
		{
			$errors[] = ' Användarnamn måste vara alfanumeriska och 4-15 tecken.';
		}
		
		if (empty($username) || empty($password))
		{
			$errors[] = ' Var god fyll i alla fält.';
		}
		
		if (empty($errors))
		{
			$SQLCheckLogin = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username AND `password` = :password");
			$SQLCheckLogin -> execute(array(':username' => $username, ':password' => SHA1($password)));
			$countLogin = $SQLCheckLogin -> fetchColumn(0);
			if ($countLogin == 1)
			{
				$SQLGetInfo = $odb -> prepare("SELECT `username`, `ID` FROM `users` WHERE `username` = :username AND `password` = :password");
				$SQLGetInfo -> execute(array(':username' => $username, ':password' => SHA1($password)));
				$userInfo = $SQLGetInfo -> fetch(PDO::FETCH_ASSOC);
				if ($userInfo['status'] == 0)
				{
					$_SESSION['username'] = $userInfo['username'];
					$_SESSION['ID'] = $userInfo['ID'];
					echo '<div class="nNote nSuccess hideit"><p>Godkänd! Vänta 5 sekunder...</div><meta http-equiv="refresh" content="5;url=main.php">';
				}
				else
				{
					echo '<div class="nNote nFailure hideit"><p>Du har blivit avstängd.</p></div>';
				}
			}
			else
			{
				echo '<br /><br /><div class="nNote nFailure hideit"><p>Inloggningen misslyckades...</p></div>';
			}
		}
		else
		{
			echo '<div class="nNote nFailure hideit"><br />';
			foreach($errors as $error)
			{
				echo '-'.$error.'<br />';
			}
			echo '</div>';
		}
	}
}
else
{
	header('location: index.php');
}
?>
Citera
2016-11-05, 21:05
  #4
Medlem
Finns kolumnen 'status' i tabellen users? Det är den du försöker läsa med $userInfo['status'].
Citera
2016-11-06, 13:21
  #5
Moderator
Protons avatar
Citat:
Ursprungligen postat av lugnare
Jo..

Kod:
if (!($user -> LoggedIn()))
{
	if (isset($_POST['loginBtn']))
	{
		$username = $_POST['username'];
		$password = $_POST['password'];
		$errors = array();
		if (!ctype_alnum($username) || strlen($username) < 4 || strlen($username) > 15)
		{
			$errors[] = ' Användarnamn måste vara alfanumeriska och 4-15 tecken.';
		}
		
		if (empty($username) || empty($password))
		{
			$errors[] = ' Var god fyll i alla fält.';
		}
		
		if (empty($errors))
		{
			$SQLCheckLogin = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username AND `password` = :password");
			$SQLCheckLogin -> execute(array(':username' => $username, ':password' => SHA1($password)));
			$countLogin = $SQLCheckLogin -> fetchColumn(0);
			if ($countLogin == 1)
			{
				$SQLGetInfo = $odb -> prepare("SELECT `username`, `ID` FROM `users` WHERE `username` = :username AND `password` = :password");
				$SQLGetInfo -> execute(array(':username' => $username, ':password' => SHA1($password)));
				$userInfo = $SQLGetInfo -> fetch(PDO::FETCH_ASSOC);
				if ($userInfo['status'] == 0)
				{
					$_SESSION['username'] = $userInfo['username'];
					$_SESSION['ID'] = $userInfo['ID'];
					echo '<div class="nNote nSuccess hideit"><p>Godkänd! Vänta 5 sekunder...</div><meta http-equiv="refresh" content="5;url=main.php">';
				}
				else
				{
					echo '<div class="nNote nFailure hideit"><p>Du har blivit avstängd.</p></div>';
				}
			}
			else
			{
				echo '<br /><br /><div class="nNote nFailure hideit"><p>Inloggningen misslyckades...</p></div>';
			}
		}
		else
		{
			echo '<div class="nNote nFailure hideit"><br />';
			foreach($errors as $error)
			{
				echo '-'.$error.'<br />';
			}
			echo '</div>';
		}
	}
}
else
{
	header('location: index.php');
}
?>
Jaså, var skulle det ske?

Kod:
$SQLGetInfo $odb -> prepare("SELECT `username`, `ID` FROM `users` WHERE `username` = :username AND `password` = :password");
$SQLGetInfo -> execute(array(':username' => $username':password' => SHA1($password)));
$userInfo $SQLGetInfo -> fetch(PDO::FETCH_ASSOC); 
Jag ser den inte där nånstans iaf?
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback