Avatar billede pytman Nybegynder
03. november 2004 - 09:28 Der er 19 kommentarer og
1 løsning

Hjælp til if sætning der opføre dig mærkeligt

Jeg er igang med at lave en side med log ind og sådan..

Og når jeg logger KORREKT ind virker det fint, MEN skriver jeg forkert står siden bare stille.. 

Skriver lige min kode..


$query = mysql_query("SELECT * FROM login WHERE brugernavn
= '".$login."' AND kodeord = '".$pass."'");
   
  while ($row = mysql_fetch_array($query)) {
      if ($row['brugernavn'] == $login AND $row['kodeord'] == $pass)
      {
    $_SESSION['logged'] = "yes";
    ?> <script language="javascript">location.href='index.php'</script> <?PHP
      }
      else
      {
      ?> <script language="javascript">location.href='../index.php?do=adminlog'</script> <?PHP
      }
    }

Den går fint ind i IF delen HVIS man skriver det korrekte bruger og pass... MEN skriver man forkert, så dør siden, står stille og INTET sker... Har prøvet at skrive echo "hej";ind i min else sætning men heller ikke dette bliver udskrevet..¨

Håber en der ude kan hjælpe..

//Pytter
Avatar billede hmortensen Nybegynder
03. november 2004 - 09:36 #1
if ($row['brugernavn'] == $login AND $row['kodeord'] == $pass) {
    $_SESSION['logged'] = "yes";
    header("location: index.php");
    exit;
} else {
    header("location: ../index.php?do=adminlog");
    exit;
}


Har du husket en session_start(); inden du sætter din session ?
Avatar billede jaw Nybegynder
03. november 2004 - 09:37 #2
Prøv at ændre din if-sætning til:

if(mysql_num_rows($query) > 0)) {
  while($row = mysql_fetch_array($query))  {

For som du gør nu, laver du en forespørgsel på noget, der ikke har en værdi. Altså $row['brugernavn'] har ingen værdi, medmindre pass etc. er rigtigt...
Avatar billede pytman Nybegynder
03. november 2004 - 09:37 #3
Ja har huske session_start(); :D prøver det lige med det samme
Avatar billede hmortensen Nybegynder
03. november 2004 - 09:41 #4
Ah, jeg kiggede ikke hele koden igennem.

Hvis du ikke skal bruge noget data fra databasen, men bare tjekke om nrugernavn/kodeord er rigtigt, kan du gøre sådan her:

$query = mysql_query("SELECT COUNT(*) FROM login WHERE brugernavn = '".$login."' AND kodeord = '".$pass."'");
if (mysql_result($query, 0) > 0) {
    $_SESSION['logged'] = "yes";
    header("location: index.php");
    exit;
} else {
    header("location: ../index.php?do=adminlog");
    exit;
}
Avatar billede pytman Nybegynder
03. november 2004 - 09:43 #5
Hmm den dør stadig..

Prøv selv.. www.altomintet.dk/vsb_2/ klik på login admin/admin

Skriver du forkert så dør detn..
Avatar billede jaw Nybegynder
03. november 2004 - 09:44 #6
Det her virker:

$query = mysql_query("SELECT * FROM tele2_brugere WHERE brugernavn
= '".$login."' AND adgangskode = '".$pass."'");
 
  if(mysql_num_rows($query) > 0) { 
  while ($row = mysql_fetch_array($query)) {
      $_SESSION['logged'] = "yes";
    ?> <script language="javascript">location.href='index.php'</script> <?PHP
      }
    }
      else
      {
      ?> <script language="javascript">location.href='../index.php?do=adminlog'</script> <?PHP
      }

Sådan set også det jeg skrev, men ved jo ikke om du har gjort det helt som jeg mente det :)
Avatar billede jaw Nybegynder
03. november 2004 - 09:46 #7
...og den kan egentlig gøres mere simpel, så jeg lige:

$query = mysql_query("SELECT * FROM tele2_brugere WHERE brugernavn = '".$login."' AND adgangskode = '".$pass."'");
 
if(mysql_num_rows($query) > 0) { 
  $_SESSION['logged'] = "yes";
  ?> <script language="javascript">location.href='index.php'</script> <?PHP
} else {
  ?> <script language="javascript">location.href='../index.php?do=adminlog'</script> <?PHP
}
Avatar billede deadmez Nybegynder
03. november 2004 - 09:48 #8
du skal vel bare fortælle den at hvis ikke brugernavnet og koden er korrekt så skal den gå til en "hovsa du har ikke skrevet de rigtige informationer" side.... ?? har jeg ikke ret ??

Lav en tegning over din programmering... det hjælper rigtig meget og gør chancen for fejl mindre..

brug feks. programmet fra www.easycode.de


Mvh.
DeadMeZ
Avatar billede pytman Nybegynder
03. november 2004 - 10:22 #9
Jaw det sidste virker.. :D

Har jeg forstået det korrekt... at mysql_num_rows tjekker hvor mange rækker der kommer ud af min SQL streng?

Og er den over 0 logger den ind og finder den ingen går dne til else delen.. ikke??

//pytter
Avatar billede hmortensen Nybegynder
03. november 2004 - 10:32 #10
Korrekt

Min udgave bruger COUNT() i SQL'en som tæller om der er et resultat, og vil derfor ikke returnere udnødvendig data
Avatar billede pytman Nybegynder
03. november 2004 - 10:32 #11
hmortensen

Det du skrev med Header virker ikke... så bliver nød til at bruge javascript :D
Avatar billede pytman Nybegynder
03. november 2004 - 10:34 #12
hmortensen...

Og hvad godhed har det?? undskyld jeg spørger.. :D men vil ikke kode noget jeg ikke fatter.. :D
Avatar billede hmortensen Nybegynder
03. november 2004 - 11:21 #13
Hvis du får en fejl med header(), så er det fordi du har noget output før header() funktionen.

Fordelen er at hvis brugeren ikke tillader javascript, vil brugeren stadig blive sendt til den rigtige side.
Avatar billede pytman Nybegynder
03. november 2004 - 11:24 #14
Hmm ja jeg har jo en masse... men bruger altså javascript.. har siddet og arbejdet med header og kan bare ikke få det til at virke...
Avatar billede jaw Nybegynder
03. november 2004 - 11:48 #15
Du har helt ret. mysql_num_rows returnerer antallet af rækker, der opfylder dine søgekriterier, og derfor vil den kun gå videre, hvis der er en bruger med det rigtige login og pass.

COUNT() vil sådan set gøre det samme, og kan have sine fordele (måske her) overfor mysql_num_rows, men begge dele vil virke.

Jeg tillader mig at lave det et svar, for du siger vist at mit lykkedes for dig :)
Avatar billede hmortensen Nybegynder
03. november 2004 - 12:32 #16
Det er lidt overkill og hente alle felter ud, når du bare vil se om du får et resultat.

Hvis du gerne vil bruge mysql_num_rows() bør du kun hente id og ikke alle felter
Avatar billede pytman Nybegynder
04. november 2004 - 09:06 #17
hmortensen...

Skulle bare bruge ob_start(); HELT oppe i toppen af siden så virker header.. :D
Avatar billede hmortensen Nybegynder
04. november 2004 - 09:43 #18
Ja, det er så den 'grimme' løsning efter min mening.
Avatar billede jaw Nybegynder
04. november 2004 - 13:34 #19
Hvis vi snakker overkill - så tangerer ob_start den meget godt. Men korrekt, den virker da :=)
Avatar billede hmortensen Nybegynder
04. november 2004 - 14:04 #20
Du burde nok lave om, så du ikke har noget output inden din header() istedet
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