Gå til innhold

[Løst] Trenger hjelp med logginn script!


Anbefalte innlegg

Når man er logget inn blir man sendt til: /innlogget/index.php.

Men når jeg er innlogget så ser det ut som om mysql, ikke returnerer noe :hmm:

 

Kan dere hjelpe meg å finne hva jeg må gjøre om i scriptene ?

$da skriver ikke ut noe..

 

 

/index.php (bunn fil/logginn):

 

Klikk for å se/fjerne spoilerteksten nedenfor

<?php
require 'config_root.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>NETT COMUNITY - <?php echo index; ?></title>
</head>

<body>
<?php
 if(isset($_POST['logon'])) {
 mysql_logon(); // Koble til


 $user	 = mysql_real_escape_string($_POST['bruker_input']);
 $password = mysql_real_escape_string(md5($_POST['pass_input']));

	 $sql_select = mysql_query("SELECT * FROM users WHERE user_name = '$user'");
	 $select	 = mysql_fetch_array($sql_select);

		 if($select['user_pass'] != $password) {
			 print 'Feil brukernavn/passord!';
		 }
		 else {

			 session_start();

			 $id = $_SESSION['id'] = $select['id'];
			 $id .= $_SESSION['id'] .= true;
			 header ( "Location: /innlogget/index.php" );

		 }

 mysql_cllose(); // Avslutte tilkoblingen
 }
?>
<h1>Logg inn:</h1>
<form action="/index.php" method="post">
Brukernavn:<br />
<input type="text" name="bruker_input" /><br />
Passord:<br />
<input  type="password" name="pass_input" /><br />
<input type="submit" name="logon" value="Logg Inn!" />
</form>

<h2>Ikke registrert, trykk <a href="/registrer.php">her</a>!</h2>
</body>
</html>

 

 

/innlogget/index.php:

 

Klikk for å se/fjerne spoilerteksten nedenfor

<?php
session_start();
ob_start();
if($_SESSION['id'] == true){
require ''.$_SERVER['DOCUMENT_ROOT'].'/config_root.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Innlogget</title>
</head>

<body>
<?php
if(isset($_POST['logut'])) {
 $_SESSION = array();
 session_destroy();
 header ("Location: /");
}

mysql_logon();

 $sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'");
 while($row = mysql_fetch_array($sql_test)) {
	 $da = $row['user_name'];
 }

?>
<?php
echo "sql_test:<br />" . $sql_test;
print '<br />Navn:<h1>'.$da.'</h1>';
?>
<form action="" method="post"><input type="submit" name="logut" value="Logg Ut!" /></form>
</body>
</html>
<?php } else {header ( "Location: /" ); } ?>

 

sql_test:

Resource id #4

Navn:

 

Returnerer innlogget/index.php..

Endret av Rematusen
Lenke til kommentar
Videoannonse
Annonse

Vel, det som skjer i scriptet ditt er at du looper gjennom hele resultatsettet, og lagrer kun det siste brukernavnet i variablen $da. Sett inn denne kodesnutten og sjekk hva som blir outputted:

 $sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'");
while($row = mysql_fetch_array($sql_test)) {
	print_r($row);
}

Hvis det ikke blir outputtet noen informasjon om variabelen $row, så er resultsettet fra MySQL tomt (dette kan også sjekkes med mysql_num_rows()). I så fall skyldes vel dette at kriteriet i spørringen (user_id = $_SESSION['id']) ikke matcher noen rader.

Lenke til kommentar
Vel, det som skjer i scriptet ditt er at du looper gjennom hele resultatsettet, og lagrer kun det siste brukernavnet i variablen $da. Sett inn denne kodesnutten og sjekk hva som blir outputted:

 $sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'");
  while($row = mysql_fetch_array($sql_test)) {
	  print_r($row);
  }

 

 

Helt tomt.. :ermm:

 

 

I så fall skyldes vel dette at kriteriet i spørringen (user_id = $_SESSION['id']) ikke matcher noen rader.

 

Det er en rad i tabbelen som heter user_id.

Endret av Rematusen
Lenke til kommentar

$sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'");

 

Hvis user_id er integer burde du kanskje fjerne ' rundt verdien ($_SESSION['id']).

Eller prøv echo på $_SESSION['id'] og se om den faktisk eksisterer i databasen...

 

 

BTW:

 

if($_SESSION['id'] == true){

kan bedre skrives som

if($userId = filter_var($_SESSION['id'], FILTER_VALIDATE_INT)) {

...

$sql_test = mysql_query("SELECT * FROM users WHERE user_id = $userId");

Endret av OISNOT
Lenke til kommentar
$sql_test = mysql_query("SELECT * FROM `users` WHERE `user_id` = '".$_SESSION['id']."'");

 

Hvis user_id er integer burde du kanskje fjerne ' rundt verdien ($_SESSION['id']).

Eller prøv echo på $_SESSION['id'] og se om den faktisk eksisterer i databasen...

 

 

BTW:

 

if($_SESSION['id'] == true){

kan bedre skrives som

if($userId = filter_var($_SESSION['id'], FILTER_VALIDATE_INT)) {

...

$sql_test = mysql_query("SELECT * FROM users WHERE user_id = $userId");

 

 

:hmm: Skrev echo $_session[id], og det returnerte 1. Men i databasen er id på brukeren 2!

Men når jeg skriver: echo $userID;, (userid = session(id)). Så kommer det ingenting :dontgetit:

Noe feil med innloggingen da?

Endret av Rematusen
Lenke til kommentar
Gjetter på at det som skjer når du kjører $id .= $_SESSION['id'] .= true; er at den caster ID'en til boolean, og da får den bare verdien true ("1" når den castes til string). Prøv å fjerne linja og se om det funker bedre da.

Det castes til string. Hvis de hadde verdien 1 fra før får $_SESSION['id'] verdien 11 og $id får verdien 111.

Endret av OISNOT
Lenke til kommentar
Ikke det at jeg tror dette er problemet, men sier i fra alikevel :)

 

Du har en skrivefeil når du stenger databasen.

mysql_cllose(); // Avslutte tilkoblingen

 

Funksjon ;) (function {})

 

 

Gjetter på at det som skjer når du kjører $id .= $_SESSION['id'] .= true; er at den caster ID'en til boolean, og da får den bare verdien true ("1" når den castes til string). Prøv å fjerne linja og se om det funker bedre da.

 

Takk, Lokaltog!

Det fungerte :)

Begynte å lure, siden etter jeg endret litt igår - så ble plutselig id 21 :s når den egentlig var 2..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...