Avatar billede ciffer Nybegynder
27. juli 2005 - 22:02 Der 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";
    }
}
?>

Login.php
<?php
?>

<form action="login_check.php" method="POST">
<table>
  <tr>
    <td>Brugernavn <input type="text" name="username"></td>
  </tr>
  <tr>
    <td>Password <input type="password" name="password"></td>
  </tr>
  <tr>
    <td><input type="submit" name="login" value="login"></td>
  </tr>
</table>
</form>

Connect.php
<?php
$conn = mysql_connect("xxx", "xxx", "xxx") or
die ("Fejl");
mysql_select_db('test');
mysql_close($conn);
?>

Jeg har oprettet en tabel i databasen (table 'tableuser'), der indeholder en bruger, hvis username samt password jeg forsøger at anvende.
Avatar billede leif Seniormester
27. juli 2005 - 22:17 #1
Er det på et webhotel ? Hedder din Bruger ODBC ?
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:25 #2
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?
Avatar billede leif Seniormester
27. juli 2005 - 22:26 #3
Har du oprettet en bruger til din MySQL eller prøv med root uden password
Avatar billede leif Seniormester
27. juli 2005 - 22:29 #4
Så er det jp fordi brugernavn og password er forkert !
Avatar billede leif Seniormester
27. juli 2005 - 22:31 #5
Er passwordet i tabellen krypteret ?
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:32 #6
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?
Avatar billede leif Seniormester
27. juli 2005 - 22:33 #7
Ja, det er den du får Fejl !
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:33 #8
Nej mit password sendes ikke krypteret endnu.
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:35 #9
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");

Men i stedet for jeg denne fejlmeddelse:

echo "du er ikke logget ind";

Eller sådan har jeg ihf. forstået det?!?
Avatar billede leif Seniormester
27. juli 2005 - 22:36 #10
Korrekt ! or die () er kun hvis der er en fejl i SQL sætningen.
Avatar billede leif Seniormester
27. juli 2005 - 22:39 #11
Omformuleringen: or die () er kun hvis der er en fejl i SQL sætningen, hvis den ikke finder nogen rækker vil du få den egen echo "Fejl";
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:40 #12
Ok. Så er det sidstnævnte, der er problemet, for nu får jeg min egen fejl.
Avatar billede leif Seniormester
27. juli 2005 - 22:41 #13
Taster du brugernavn og password korrekt ?

Står passwordet i databasen krypteret ?
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:43 #14
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.
Avatar billede leif Seniormester
27. juli 2005 - 22:45 #15
Prøv at echo Username og Password under din fejl ! Husk store og små bogstaver !
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:46 #16
Jeps... prøver.
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:50 #17
Får nu en ny fejl vedr. min db-adgang?!? - uden at have prøvet det du foreslog. Jeg kigger videre på det i morgen. Vender tilbage.
Avatar billede leif Seniormester
27. juli 2005 - 22:55 #18
Fjern mysql_close($conn); fra connect.php du lukker forbindelsen lige efter du har åbnet den !
Avatar billede ciffer Nybegynder
27. juli 2005 - 22:57 #19
Den har jeg fjernet. Jeg fandt at den ikke virkede efter hensigten.
Avatar billede leif Seniormester
27. juli 2005 - 22:59 #20
Okay ! Se på www.ljnet.dk/exp/635469/ din kode virker fint !
Avatar billede ciffer Nybegynder
27. juli 2005 - 23:03 #21
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?!?
Avatar billede ciffer Nybegynder
27. juli 2005 - 23:04 #22
Og den fejl kommer, når jeg via programmet PHP Designer blot tester min Login_check.php fil!
Avatar billede leif Seniormester
27. juli 2005 - 23:05 #23
Så password sikkert forkert i din connect.php
Avatar billede leif Seniormester
27. juli 2005 - 23:08 #24
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 !
Avatar billede ciffer Nybegynder
27. juli 2005 - 23:10 #25
Ja det er korrekt mht. mine fejlmeddelser :-)  - jo bedre de er jo nemmere er det at finde fejlene!
Avatar billede ciffer Nybegynder
27. juli 2005 - 23:24 #26
Leif>> Du har brugt noget tid her - læg et svar så du kan få noget guld.
Avatar billede leif Seniormester
27. juli 2005 - 23:27 #27
Har du fået det til at virke ?
Avatar billede ciffer Nybegynder
27. juli 2005 - 23:29 #28
Nej ikke helt, men det skal nok komme :-)
Avatar billede leif Seniormester
27. juli 2005 - 23:30 #29
Hvad er fejlen nu ?
Avatar billede ciffer Nybegynder
27. juli 2005 - 23:31 #30
Fejlen er følgende:

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
Avatar billede leif Seniormester
27. juli 2005 - 23:33 #31
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
Avatar billede leif Seniormester
27. juli 2005 - 23:34 #32
Sorry, i din connect.php er der en tom linie i toppen ! (Kunne det være !)
Avatar billede ksoren Nybegynder
27. juli 2005 - 23:37 #33
Du skal huske et kald til session_start() inden du tager fat i $_SESSION
Avatar billede ciffer Nybegynder
27. juli 2005 - 23:41 #34
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
Avatar billede ksoren Nybegynder
27. juli 2005 - 23:46 #35
Det samme gælder for session_start, der må ikke været sendt noget til klienten før kaldet

Kontroller også at du ikke har linieskift/mellemrum efter ?> i din connect.php
Avatar billede ciffer Nybegynder
27. juli 2005 - 23:51 #36
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');
?>

Login.php

<?php
?>
<form action="login_check.php" method="POST">
<table>
  <tr>
    <td>Brugernavn <input type="text" name="username"></td>
  </tr>
  <tr>
    <td>Password <input type="password" name="password"></td>
  </tr>
  <tr>
    <td><input type="submit" name="login" value="login"></td>
  </tr>
</table>
</form>


Login_check.php

<?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");
}
?>
Avatar billede leif Seniormester
27. juli 2005 - 23:59 #37
Hvis der er et mellemrum eller tomlinie før <? eller efter ?>, eller der sendes en echo eller print så vil den give den fejl !
Avatar billede ksoren Nybegynder
28. juli 2005 - 00:02 #38
Der er en fejl her:
$_SESSION['login'] = "OK";


i in.php forventer du den skal være
$_SESSION['login'] = true;


Hvis du stadig får 'headers already sent' skyldes det linieskift/mellemrum - og det er ret sværet at bedømme ud fra ovenstående
Avatar billede leif Seniormester
28. juli 2005 - 00:04 #39
Kan du zippe filerne og ligge et sted til download ! Selvølgelig uden dit brugernavn og password i connect, men ellers filerne ?
Avatar billede ciffer Nybegynder
28. juli 2005 - 00:05 #40
Jeg kan ikke lige pt. ligge dem et sted, men har du ikke en hotmail/gmail eller lign. som jeg evt. kan sende dem til?
Avatar billede leif Seniormester
28. juli 2005 - 00:06 #41
Kig på min info ! Så vil du finde alle de oplysninger du skal bruge til mig !
Avatar billede ciffer Nybegynder
28. juli 2005 - 00:06 #42
OK.
Avatar billede ciffer Nybegynder
28. juli 2005 - 00:15 #43
Nu skulle jeg have sendt dig mine php filer via din hotmail adr.
Avatar billede leif Seniormester
28. juli 2005 - 00:20 #44
Problemet er at Hotmail viser filerne så det kan jeg ikke bruge til noget ! Men du læste åbenbart ikke Email til mig ?
Avatar billede ciffer Nybegynder
28. juli 2005 - 00:22 #45
"Men du læste åbenbart ikke Email til mig ?" Hvad mener du?
Avatar billede leif Seniormester
28. juli 2005 - 00:23 #46
Hotmail modificerede filerne da jeg videre sendte dem til min Outlook !
Avatar billede ciffer Nybegynder
28. juli 2005 - 00:26 #47
Har nu smidt filerne til denne adr.: exp@ljnet.dk
Avatar billede leif Seniormester
28. juli 2005 - 00:31 #48
Har smidt nogen tilrettet filer tilbage ! Da Hotmail modificerede dem ! Prøv at ligge dem ind !
Avatar billede ciffer Nybegynder
28. juli 2005 - 00:41 #49
Tak! Kigger på dem i morgen!
Avatar billede ciffer Nybegynder
28. juli 2005 - 10:29 #50
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.
Avatar billede leif Seniormester
28. juli 2005 - 11:10 #51
Som du kan se på adressen tidligere virker filerne fint så efter min personlinge mening kan du ikke bruge de filer jeg har sendt til dig !

Der ligger de samme filer i mappen 1 som jeg har sendt dig.
Avatar billede ciffer Nybegynder
28. juli 2005 - 13:28 #52
Kan mit problem skyldes, at min Apache ikke er sat korrekt op?
Avatar billede ciffer Nybegynder
29. juli 2005 - 19:47 #53
Lukker!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester