FreeZeMan Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 Heisann, har kommet over et problem som jeg ikke klarer å forstå. Har ordnet til slik at jeg henter inn informasjon fra databasen ved hjelp av $_SESSION, men virker som at det ikke lagrer seg slik at jeg kan vise det på neste siden som dukker opp. Fokuser mest på den tykke skriften , Setter opp rekkefølgen nedenfor: index.php ------------------------------------------------------------ <form action="Logg_inn.php"> <strong>Brukernavn: </strong><br> <input type="text" name="brukernavn" maxlength="15"/><br> <strong>Passord: </strong><br> <input type="password" name="passord" maxlength="15"/><br> <input type="submit" value="Logg inn" /><br><br> <input type="submit" value="Registrering" /> </form> -------------------------------------------------------------- Logg_inn.php ------------------------------------------------------------- <?php session_start(); ?> $db_host = "riktig"; $db_navn = "riktig"; $db_brukernavn = "riktig"; $db_passord = "riktig"; //Connection to the Database $connection = mysql_connect($db_host, $db_brukernavn, $db_passord); if (!$connection) { die ("Could not connect to the database: ".mysql_error()); } //Selecting the Database $db_select=mysql_select_db($db_navn); if (!$db_select) { die ("Could not select the database: ".mysql_error()); } $Xbrukernavn = $_POST['brukernavn']; $Xpassord = $_POST['passord']; $Registrert = false; $query = "SELECT Brukernavn FROM personer"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { extract($row); if (strtolower($brukernavn) == strtolower($Xbrukernavn)) { $Registered = true; break; } } if (!$Registered) { echo "Dette brukernavnet er ikke registrert!"; } if ($Registered) { $query = "SELECT * FROM personer WHERE Brukernavn='$Xbrukernavn'"; $result = mysql_query($query) or die("Feil brukernavn!"); $row = mysql_fetch_array($result, MYSQL_ASSOC); extract($row); if ($Passord == $Xpassord) { $_SESSION['S_Navn'] = $Navn; $_SESSION['S_Adresse'] = $Adresse; $_SESSION['S_Postboks'] = $Postboks; $_SESSION['S_By'] = $By; $_SESSION['S_Telefonnummer'] = $Telefonnummer; $_SESSION['S_Brukernavn'] = $Brukernavn; $_SESSION['S_Passord'] = $Passord; header("Location: Hovedside.php"); exit; echo "Du er nå innlogget, <strong>$Navn</strong>"; } else echo "Du har skrevet inn feil passord, vennligst prøv igjen"; } ?> ------------------------------------------------------------- Hovedside.php ------------------------------------------------------------- <?php session_start(); ?> <!DOCTYPE..... <body> <?php echo "$S_Navn"; ?> <---- Denne kommer ikke opp <?php include("Function.php"); ?> <table width="100%"> <tr> <td><div align="center"><?php Overskrift(); ?></div> ....... -------------------------------------------------------------- Databasen inneholder følgende: Navn, Adresse, Postboks, By, Telefonnummer, Brukernavn, Passord. Og tabellen kalles for 'personer' Jeg sammenlignet dette også med sidene jeg laget før som virket, og de var satt opp nøyaktig slik. Lenke til kommentar
zatux Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 Ser ikke noen åpenbare feil, men du kan jo droppe "header("Location: Hovedside.php");" og kjøre en echo av de ulike variablene, for å se om det faktisk er sessions det er noe rart med, eller om det er hentingen av data som glipper litt. Lenke til kommentar
FreeZeMan Skrevet 16. oktober 2008 Forfatter Del Skrevet 16. oktober 2008 Ser ikke noen åpenbare feil, men du kan jo droppe "header("Location: Hovedside.php");" og kjøre en echo av de ulike variablene, for å se om det faktisk er sessions det er noe rart med, eller om det er hentingen av data som glipper litt. Ja, tenkte selv på det, men det oppstod en feil da, denne meldingen kommer da: Warning: extract() [function.extract]: First argument should be an array in C:\wamp\www\Kunstbutikken\Logg_inn.php on line 46 45: $row = mysql_fetch_array($result, MYSQL_ASSOC); 46: extract($row); 47: if ($Passord == $Xpassord) Litt usikker på hva jeg må gjøre for å ordne det Lenke til kommentar
OISNOT Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 Logg_inn.php <?php session_start(); ?> Skal det virkelig være en "?>" der? Query feiler ikke hvis det ikke får noen rader tilbake. $result = mysql_query($query) or die("Query failed!"); if (!$row = mysql_fetch_array($result, MYSQL_ASSOC)) { exit('Could not find the user'); } Lenke til kommentar
zatux Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 Kjør spørringen "$query = "SELECT * FROM personer WHERE Brukernavn='$Xbrukernavn'" manuelt med samme brukernavn og se om du faktisk får når det du er på jakt etter. extract() sier at $row ikke er en gyldig array, men det skulle i grunnen mysql_fetch_array() fortalt i forveien hvis det var tilfellet. Prøv; $row = mysql_fetch_array($result, MYSQL_ASSOC); if ($row[Passord] == $Xpassord) { ... Du burde deklarere en session til som forteller om brukeren er innlogget eller ikke, for å kjøre en sjekk ved ver sidevisning. Her kan jo hovedside.php vises selv om du ikke er innlogget - og det er nok helt sikkert derfor di ikke får opp noen navn heller. Lenke til kommentar
FreeZeMan Skrevet 16. oktober 2008 Forfatter Del Skrevet 16. oktober 2008 Da har jeg testet ut ved å kjøre spørringen manuelt, fjernet extract() og skrev inn; if ($row[Passord] == $XPassord), men siden ble fortsatt helt tom da, med adressen: Logg_inn.php?brukernavn=Kenito&passord=Secret, hehe.... Skal prøve å deklarere en session til angående innlogget, så får vi se Lenke til kommentar
FreeZeMan Skrevet 16. oktober 2008 Forfatter Del Skrevet 16. oktober 2008 Kjør spørringen "$query = "SELECT * FROM personer WHERE Brukernavn='$Xbrukernavn'" manuelt med samme brukernavn og se om du faktisk får når det du er på jakt etter. Du burde deklarere en session til som forteller om brukeren er innlogget eller ikke, for å kjøre en sjekk ved ver sidevisning. Her kan jo hovedside.php vises selv om du ikke er innlogget - og det er nok helt sikkert derfor di ikke får opp noen navn heller. Hmmm... sliter kanskje litt med å sette opp den session som forteller om brukeren er innlogget eller ikke. Har faktisk aldri gjort det før, hehe... Laget en ny rute i databasen som kalles for "Innlogget", alle består av "Nei". Nye jeg skriver inn består av fet skrift. Sikkert feil med hvordan jeg starter regner jeg med, er fortsatt en stor amatør rundt slikt, hehe... Men hvordan skal jeg fortsette egentlig? -------------------------------------------------------------------------------------------- if ($Passord == $Xpassord) { $query = "INSERT INTO Innlogget FROM personer WHERE Brukernavn='Xbrukernavn' AND Passord='XPassord' value ('Ja'); $_SESSION ['S_Navn'] = $Navn; osv.... --------------------------------------------------------------------------------------------- Lenke til kommentar
stian90_2 Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 Tips, denne kan du gjøre enklere $query = "SELECT Brukernavn FROM personer"; $result = mysql_query($query); $query = "SELECT Brukernavn FROM personer"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { extract($row); if (strtolower($brukernavn) == strtolower($Xbrukernavn)) { $Registered = true; break; } } if (!$Registered) { echo "Dette brukernavnet er ikke registrert!"; } til if(mysql_num_rows(mysql_query("SELECT Brukernavn FROM personer WHERE Brukernavn='$Xbrukernavn'"))==false) echo 'Brukernavn finnes ikke'; Tror den ble rett.. Mulig du må flytte "==false" ett hakk.. Lenke til kommentar
Epower Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 Du kunne jo ha prøvd med <form action="Logg_inn.php" method="post"> Lenke til kommentar
FreeZeMan Skrevet 16. oktober 2008 Forfatter Del Skrevet 16. oktober 2008 (endret) Tips, denne kan du gjøre enklere $query = "SELECT Brukernavn FROM personer"; $result = mysql_query($query); $query = "SELECT Brukernavn FROM personer"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { extract($row); if (strtolower($brukernavn) == strtolower($Xbrukernavn)) { $Registered = true; break; } } if (!$Registered) { echo "Dette brukernavnet er ikke registrert!"; } til if(mysql_num_rows(mysql_query("SELECT Brukernavn FROM personer WHERE Brukernavn='$Xbrukernavn'"))==false) echo 'Brukernavn finnes ikke'; Tror den ble rett.. Mulig du må flytte "==false" ett hakk.. Du og Eirikkkkk fikk meg nå til å se 2 problemer med det jeg hadde skrevet og glemt, hehe... Takker så mye for det, det første jeg la merke til med en gang var at jeg nå så at variabelen Registrert var feil. Den første var på Norsk og de andre var skrevet på Engelsk, pluss at jeg hadde glemt å skrive på "method = POST". Skal bare prøve å rette opp disse feilene og sjekke ut om alt virker da som det skal, deretter skal jeg teste ut den enkle metoden som jeg ser at du har skrevet her Endret 16. oktober 2008 av FreeZeMan Lenke til kommentar
Epower Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 Det skal være method="POST" ikke method="$POST" Lenke til kommentar
FreeZeMan Skrevet 16. oktober 2008 Forfatter Del Skrevet 16. oktober 2008 (endret) Det skal være method="POST" ikke method="$POST" hehe... jeg vet, ble bare skrevet feil her. Du ser at jeg omgjorde det før du skrev det Endret 16. oktober 2008 av FreeZeMan Lenke til kommentar
zatux Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 Hvis brukeren har logget inn, kjører du en: $_SESSION[innlogget] = true; Og ved ver sidevisning kan du ha en " if(!$_SESSION[innlogget]) { echo("UPS!"); exit; } " if($variabel) sjekker om variabelen er satt til true, mens if(!$variabel) sjekker om variabelen ikke er satt til true. Du trenger ikke ha noe verdi i databasen, sålangt at du ikke vil ha en mer avansert "remeber me"-funksjon på siden din. Lenke til kommentar
FreeZeMan Skrevet 16. oktober 2008 Forfatter Del Skrevet 16. oktober 2008 Hvis brukeren har logget inn, kjører du en: $_SESSION[innlogget] = true; Og ved ver sidevisning kan du ha en " if(!$_SESSION[innlogget]) { echo("UPS!"); exit; } " if($variabel) sjekker om variabelen er satt til true, mens if(!$variabel) sjekker om variabelen ikke er satt til true. Du trenger ikke ha noe verdi i databasen, sålangt at du ikke vil ha en mer avansert "remeber me"-funksjon på siden din. Jeg fikk ordnet resten av problemene og fikset sidevisningen du skrev her, men likevel så dukket det ikke opp noe her. Satt inn "$_SESSION[innlogget] = true;" i lag med resten av $_SESSION listen jeg har, og skrev inn " if(!$_SESSION[innlogget]) { echo("UPS!"); exit; } "på Hovedsiden.php, men fortsatt ingenting som dukket opp. Skal lese gjennom alt til punkt til prikke, det må være en feil et sted på en av sidene mine her, hehe Lenke til kommentar
OIS Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 1. Lær hva mysql_query og mysql_fetch_array returnerer ved feil eller ingen resultat. 2. Du spør etter hele listen med personer for å loope igjennom, deretter spørre på nytt med det brukernavnet. Men du har jo allerede brukernavnet du skal spørre etter. 3. Du har en echo etter exit. 4. Hvis du vil vite korfor mysql_real_escape_string er der, søk opp SQL Injection. 5. Brukernavn og passord bør være case sensitive. if ((!$brukernavn = $_POST['brukernavn']) || (!$passord = $_POST['passord'])) { die('Missing username or password'); } $query = "SELECT * FROM personer where Brukernavn = '" . mysql_real_escape_string($brukernavn) . "'"; $result = mysql_query($query) or die('Problem with database'); if ($bruker = mysql_fetch_array($result)) { if ($bruker['passord'] === $passord) { // unset($bruker['passord']; $_SESSION['bruker'] = serialize($bruker); //for å få det ut: // $bruker = unserialize($_SESSION['bruker']); header("Location: Hovedside.php"); exit(); //Logget inn; } else { else echo "Du har skrevet inn feil passord, vennligst prøv igjen"; } } else { echo "Dette brukernavnet er ikke registrert!"; } Lenke til kommentar
Wackamole Skrevet 17. oktober 2008 Del Skrevet 17. oktober 2008 <?php echo "$S_Navn"; ?> <---- Denne kommer ikke opp Fant denne linjen i Hovedside.php -- skal det ikke være $_SESSION['Navn']; - jeg ser ikke at du lager $S_Navn variabelen noe sted... Lenke til kommentar
OIS Skrevet 17. oktober 2008 Del Skrevet 17. oktober 2008 <?php echo "$S_Navn"; ?> <---- Denne kommer ikke opp Fant denne linjen i Hovedside.php -- skal det ikke være $_SESSION['Navn']; - jeg ser ikke at du lager $S_Navn variabelen noe sted... <?php echo $_SESSION['S_Navn']; ?> eller <?php $bruker = unserialize($_SESSION['bruker']); echo $bruker['Navn']; ?> Lenke til kommentar
FreeZeMan Skrevet 17. oktober 2008 Forfatter Del Skrevet 17. oktober 2008 <?php echo "$S_Navn"; ?> <---- Denne kommer ikke opp Fant denne linjen i Hovedside.php -- skal det ikke være $_SESSION['Navn']; - jeg ser ikke at du lager $S_Navn variabelen noe sted... <?php echo $_SESSION['S_Navn']; ?> eller <?php $bruker = unserialize($_SESSION['bruker']); echo $bruker['Navn']; ?> Grunnen til at jeg skrev det slik: $S_Navn er grunnet at jeg brukte det før i tiden, rart, men da fungerte det perfekt, hehe... Men skal slutte med det nå Grunnen med at jeg også hadde echo bak exit var rett og slett for at jeg ikke visste helt hva exit'en var for, før nå selvsagt, hehe... Og grunnen til Case sensitiviteten var bare grunnet at dette er prøvelser før jeg forandrer alt til slik som er det beste. Har også nettopp fikset noe med databasen siden det alltid stod en feil der med noe som het for mcrypt der også, men det hjelpet heller ikke. For å være ærlig så virker det som om at jeg ikke klarer å lagre noe inn på $_SESSION, har tatt noen småe tester rundt det. Har også lest igjennom alt som står om $_SESSION på 2 bøker jeg har, men det er synd at det ikke står noe om hvordan man lagrer innhold fra databasen der. For ca. 1 uke siden så brukte jeg denne som virket: while ($result_row = mysql_fetch_row(($result))) { echo 'Navn: '.$result_row[1] . '<br />'; echo 'Brukernavn: '.$result_row[6] . '<br />'; osv... Testet den ut og den virker fortsatt Lenke til kommentar
FreeZeMan Skrevet 17. oktober 2008 Forfatter Del Skrevet 17. oktober 2008 Da klarte jeg å få det lagret på $_SESSION $_SESSION['S_Navn'] = $result_row[1]; Det viser vel at koden er feil skrevet slik at det ikke er mulig å skrive inn f.eks: $Navn, $Passord, $Brukernavn og tro at det er siktet til tabellen's lister i databasen. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå