27. juli 2005 - 22:02Der er
52 kommentarer og 1 løsning
Problem med login funktion
Jeg er ved at lave en simpel login funktion i php. Mit problem er dog, at jeg får følgende to fejlmeddelser: Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO)... Warning: mysql_query(): A link to the server could not be established... Det lader til, at jeg ikke får fat i min database. Jeg kan se, at der er andre her på sitet, der tidligere har haft samme problem, men de tråde har jeg kigget på og er ikke kommet meget videre. Jeg har følgende tre filer:
Login_check.php <?php require("connect.php"); if(isset($_POST['login'])) { $res = mysql_query("SELECT * FROM tableuser WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die("Du er ikke oprettet som bruger i databasen"); $antal = mysql_num_rows($res); if($antal == 1) { $_SESSION['login'] = "OK"; $_SESSION['navn'] = $_POST['ok']; header("location: in.php"); } else { echo "Fejl"; } } ?>
Nej jeg kører lokalt og min bruger hedder ikke ODBC. Mit problem har dog ændret sig nu. Jeg får ikke længere den ovennævnte fejl. Men nu får jeg blot vist min egen fejltekst fra min else sætnings echo "Fejl" sidst i min Login_check.php fil, ligegyldig om jeg taster username og password forkert. Så jeg har vel ikke forbindelse til min db?
Hvis username og password bliver tastet forkert ind bør mit Login_check.php script vel smide en fejlmeddelse til min browser? Så der er vel et eller andet der ikke fungerer som det skal?
Hvis passwordet ryger forkert ind bør jeg få nedenstående meddelse:
$res = mysql_query("SELECT * FROM tableuser WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die("Du er ikke oprettet som bruger i databasen");
Jeg taster username og password korrekt. Password står så vidt jeg ved ikke krypeteret i databasen. Det er blot blevet tilføjet som en varchar i den tabel jeg arbejder på i mit php script.
Ja det kan jeg se, men hvorfor kører det så ikke her?!? Jeg får følgende fejl nu: mysql_connect(): Access denied for user 'root'@'localhost' Mine filer er de samme som de tidligere postede, og der fik jeg ikke denne fejl?!?
Og gør dig selv en tjeneste at lave dine fejl meddelelser lidt mere sigende ! Når du siger den skriver Fejl kan det være 2 steder i din kode enten fra connect.php eller fra login_check.php !
Notice: Undefined index: ok in C:\Program Files\Apache Group\Apache2\htdocs\Test\Login_check.php on line 8
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\Test\connect.php:8) in C:\Program Files\Apache Group\Apache2\htdocs\Test\Login_check.php on line 9
Så er det fordi du har en tom linie i toppen af din login_check.php eller sender andet output før du sender header() der må ikke været lavet en echo før eller hvis der er en tom linie i toppen af filen før <?php
Det eneste jeg kan se er, at der i denne fil er en echo inden headeren bliver sendt, men hvordan skal dennne fil ellers laves?!?
<?php if ((isset($_SESSION['login'])) && ($_SESSION['login'] === true)) { echo "er logget ind og var sat til true"; } else { header("Location: login.php"); } ?>
Jeg har forsøgt at placere session_start() i toppen af min Login_check.php fil samt i toppen af min in.php fil. Så får jeg blot dette: session_start(): Cannot send session cookie - headers already sent
Mine filer ser nu således ud. Kan ikke se, at der skulle være nogle af de problemer som du nævner tilstede, men så igen... det virker jo ikke, så noget er der jo i vejen :-)
Connect.php
<?php $conn = mysql_connect("xxx", "xxx", "xxx") or die ("Fejl fra Connect.php"); mysql_select_db('test'); ?>
<?php session_start(); require("connect.php"); if(isset($_POST['login'])) { $res = mysql_query("SELECT * FROM tableuser WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die("Du er ikke oprettet som bruger i databasen"); $antal = mysql_num_rows($res); if($antal == 1) { $_SESSION['login'] = "OK"; $_SESSION['navn'] = $_POST['ok']; header("location: in.php"); } else { echo "Fejl fra Login_check.php"; } } ?>
in.php
<?php session_start(); if ((isset($_SESSION['login'])) && ($_SESSION['login'] === true)) { echo "er logget ind og var sat til true"; } else { header("Location: login.php"); } ?>
Leif>> Har kigget på dine filer og jeg får stadigvæk samme fejl i min browser :-) Læg et svar så du kan få point. Nu har du brugt en del tid på det her!!! Jeg arbejder videre på emnet senere i dag, men starter fra scratch mht. php filer.
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.