17. juli 2007 - 23:17Der er
44 kommentarer og 1 løsning
check af login fejler
nu er jeg løbet tør for ideer, jeg har et login som bliver tjekket via verify nu vil jeg så i en ny php fil hente bruger navn til vidre behandling, men kan bare ikke fange brugernavn
$loggedIn = $_SESSION['loggedIn'];
if ( $loggedIn != true )
{
die('Verification failed! You must be logged in to view this page.');
first vil jeg gerne at jeg fanger brugerens username da jeg skal have trukket hans rigtige navn og email over i en anden anden tabel samt at hans navn og email vises i den nye oprettelse
jeg bruger login form den den tjekkes i verify.php vist 18/07-2007 07:09:14 og så har jeg lavet en test.php med det kode du skrev d 18/07-2007 08:19:59
ja ja har en database med tabel user og logger fint ind nu det er bare nu har jeg lavet en nu form med opload af billeder der vil jeg gerne at den der er logget ind for en hej "dig" :) og de ting som navn og email kommer i formen så han ikke skal udfylde det igen
så kan du naturligvis sige hvorfor udfylde navn og email igen he nu er jeg ikke så god til det programering så jeg kan ikke sætte alt sammen, og så flyttes hans navn jo i en anden tabel
der er pt ingen fejl men jeg vil gerne i scriptet upload hente den bruger der er logget på hans brugernavn hans rigtige navn og hans email . Hello "username " are you ready to uplaod you pic ? og i formem upload hvor feltet Name hentes fra user databasen samt hans email.
det viser sig nu jeg faktisk har et problem i verify.php det har jeg bare ikke set før da jeg ikke kalder filen direkte $username = $_POST['username'];
har nu prøvet et helt andet script for login og check af login, og det virker. artikel http://www.eksperten.dk/artikler/669 det jeg ikke kan forstå er hvis jeg smider (se artikel) den hemmelige side ind i min menu så kan der ikke tjekkes om man er logget på hvorfor ?????
den eneste forskel jeg kan se der er, er at den såkaldte hemmelige side nu ligger i en iframe og derfor ikke kan se om man er logget på, men ved ikke om jeg har ret
tror jeg har fundet fejlen hvis alle filer login og check og den hemligside ligger i samme bib. virker det hvis jeg smider siden den hemligside i et andet bib. så vil den ikke tjekke om man er logget på, virker skørt må mig, men er der en logisk forklaring på det ? hvis jeg ik skriver med mig selv her :)
lol der står jo hvis jeg læste at: Alle 3 filer skal ligge i samme mappe på din server for at scriptet skal fungerer. hvad skal man så ændre for at man kan læse i et andet bib ?
Du skal tilføje sti til følgende linier i check.php;
header("location: formular.htm"); * 3 (bemærk der er en bug i koden i artiklen, det skal være location: og ikke location.) og header("location: hemligside.php");
name="min form" id="min form" <--- bliver dette brugt til noget ? jeg bruger dette stedet for header da jeg ikke fik header til at virke echo '<meta http-equiv="refresh" content="2; URL=/menu.php" />'; check.php ligger kun i registration/check.php og menu.php indeholder form login som henviser til action="registration/check.php" menu henviser til menu1 som begge ligger i roden så jeg er ikke helt med hvad du mener ?
problemet er som jeg ser det at de 3 filer ikke ligger i samme bib, ik at jeg ikke kommer fint fra login som er i menu.php til menu1.php ingen fejl fejlen kommer med tjek i menu1.php hvis jeg tager indholdet af hemligside.php og ligger det i menu1.php så bliver der ikke foretaget en check af om man er logget ind
ok nok fordi jeg ik har kode med og kun fortæller. jeg logger ind fra filen menu.php og laver chech i check.php og bliver send videre til menu1.php i menu1.php <---- dertil fint nok, men i menu1.php har jeg dette :
<? //Starter endnu engang sessionerne øverst på siden, samt forbinder til databasen session_start(); include("registration/sql_connect.php"); //$link = mysql_connect("server", "brugernavn", "kodeord"); //mysql_select_db("databasenavn", $link);
//Tjekker om man er logget ind if(!empty($_SESSION['username'])) { //Laver en query der finder ens brugerid i databasen $query = mysql_query("SELECT * FROM user WHERE username='". $_SESSION['username'] ."'") or die(mysql_error()); $row = mysql_fetch_assoc($query); //Man er logget ind, og kan derfor se det hemlige indhold
echo "Hi: ". $row['username']; } else { //Brugeren er ikke logget ind echo "DOH!"; }
?> og her kan jeg kun få DOH skrevet ud,,,,, det jeg skal have ud er username.
min verify.php der vedr check <?php //Helt i starten starter vi sessioner, og forbinder til vores database session_start(); include("sql_connect.php"); //$link = mysql_connect("server", "brugernavn", "kodeord"); //mysql_select_db("databasenavn", $link);
//Tjekker om både brugernavn og kodeord er indtastet. if(empty($_POST['username']) || empty($_POST['password'])) { //Sender brugeren tilbage ved brug af en header echo "You have to login to enter here"; //header("location. formular.htm"); echo '<meta http-equiv="refresh" content="2; URL=/menu.php" />'; exit; } //Hvis både brugernavn og kodeord er sat, går vi videre. else { /* Her bruger vi databasen for første gang, idet vi nu tjekker om der er en bruger der har det brugernavn, der er indtasetet i formularen. Vi bruger or die(mysql_error()) til at få mysql til at udskrive en fejl, hvis der er noget galt med databasekaldet. */ $query = mysql_query("SELECT * FROM user WHERE username='". $_POST['username'] ."'") or die(mysql_error()); //Tjekker om der er én rækker i databasen der har det indtasetde brugernavn //Dette gør dog, at flere brugere ikke må have samme brugernavn! if(mysql_num_rows($query) == '1') { //Laver databasekaldet om til en liset (et array) i php. $row = mysql_fetch_array($query); //Tjekker om kodeordet i databasen er lig med det indtastede kodeord if($row['password'] == $_POST['password']) { //Brugeren har indtastet rigtige oplysninger, nu skal han gemmes i sessioner $_SESSION['username'] = $_POST['username']; //Derudover skal han sendes til en hemlig side, hvorpå der bliver tjekket om han er logget ind echo 'Redirecting to the user page'; echo '<meta http-equiv="refresh" content="2; URL=/menu1.php" />'; //header("location: hemligside.php");
} else { //Brugeren har skrevet et forkert kodeord //Sender brugeren tilbage til formular.htm ved brug af en header //header("location. logintest.php"); echo('You typed a wrong password.'); echo '<meta http-equiv="refresh" content="2; URL=/menu.php" />'; exit; } } //Brugernavnet fandtes ikke i databasen, derfor skal der udskrives en fejl. else { //Brugeren har skrevet et forkert brugernavn //Sender brugeren tilbage til formular.htm ved brug af en header echo('You typed a wrong username.'); echo '<meta http-equiv="refresh" content="2; URL=/menu.php" />'; //header("location. logintest.php"); exit; } }
jeg har prøvet at sætte i min menu min menu.php der vedr login <form method="post" action="registration/verify.php"> <-------her at go i menu1.php Username: <input type="text" name="username" size="13"><br> Password: <input type="password" name="password" size="13"><br> <input type="submit" value=" Login ">
og i menu1.php at include("registration/verify.php);
med det resultat at jeg naturligvis kommer i meny1.php og den skriver mit navn ud, men kort efter smidt ud med de skal v;re logget ind ved godt det er noget klydt at gøre det på den måde men for test jeg kom ind og den skrev mit navn med echo "Hi: ". $row['username'];
ok nu er jeg for træt :) jeg rettede det tilbage som før og nu skriver den som den skal hi navn så... jeg hopper i køjen se om det virker stadig imorgen.
det vist godt jeg fik sovet på det, da nu virker det ikke igen, underligt ik nok med jeg loggede ind med eget navn, prøvede et andet navn også og begge gange fik jeg det respektive navn frem istedet for DOH!
har løst problemet men hvis en af jer gerne vil have point kunne i hjælpe med en php form nu har jeg næsten sat i 4 timer og det driller stadig grrrr det jeg prøver på er at få to rækker og nedenunder en streg
Hvis du mener en af os har bidraget til løsningen på problemet, så giv vedkommende point. Ellers svar selv og tag pointene retur. Opret herefter dit nye spørgsmål i en ny tråd, da det ikke har noget med det originale spørgsmål at gøre.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.