Avatar billede thj-dk Nybegynder
18. september 2005 - 20:23 Der er 11 kommentarer

Hjælp til login script.

Hej.

Jeg har lavet et lille login script i PHP.
Når jeg indtaster et korrekt brugernavn og en korrekt adgangskode, kommer den med en fejl som var brugernavn/adgangskode forkert.

Scriptet kan I se her under:

<?php
    function quote_smart($value) {
      // Stripslashes
      if (get_magic_quotes_gpc()) {
          $value = stripslashes($value);
      }
      // Quote hvis det ikke er et heltal
      if (!is_numeric($value)) {
          $value = "'" . mysql_real_escape_string($value) . "'";
      }
      return $value;
    }

    // Skab forbindelse til mysql servern og vælg database:
    $conn = mysql_connect(localhost,xx,xx)
        or die('Kunne ikke forbinde til MySQL serveren.');
    mysql_select_db("firmwire_dk");
   
    // Opbyg og udsted forespørgsel:
    $sql = sprintf("SELECT fullN FROM users WHERE userN=%s AND userP=%s",
        quote_smart($_POST['username']),
        quote_smart($_POST['password']));

    $result = mysql_query($sql,$conn) or die('Der opstod en fejl.');
   
    if(mysql_num_rows($result) == 1) {
        session_start();
        $_SESSION['user'] = $_POST['username'];
        header("Location: ../index.php?page=auth");
    } else {
        header("Location: ../index.php?page=login_fejl");
    }
?>

Håber I kan se fejlen for jeg har ledt efter den længe og det er mig en gåde hvad der er galt.

På forhånd tak.

Mvh. Tommy Jakobsen
Avatar billede udvikler Nybegynder
18. september 2005 - 20:40 #1
Det kan måske skyldes at du har placeret en session_start() i slutningen af dit dokument ;)
- Den skal være i TOPPEN af dit dokument, ingen gang et mellemrum må komme først - kun et linieskift

fx:

<?php
session_start();
//bla bla bla
?>
Avatar billede terrak Nybegynder
18. september 2005 - 20:42 #2
Hvordan er databasen bygget op? Eksisterer felterne fullN, userN og userP i tabellen users?
Avatar billede terrak Nybegynder
18. september 2005 - 20:45 #3
session_start() skal stå før alt andet kode der ikke producerer output i browseren, ja, men det er ikke nødvendigvis i toppen.
Jeg er dog enig i at det er en god måde at undgå dumme fejl på.
Avatar billede thj-dk Nybegynder
18. september 2005 - 20:46 #4
-aco-:
Tak for det, men problemet er stadig det samme.

terrak:
Alle felterne eksistere ja.

-
Jeg prøvede lige at echo $sql og jeg får følgende output:
SELECT fullN FROM users WHERE userN='' AND userP=''

Altså må der være noget galt med funktionen quote_smart() ?
Kan i se hvad problemet skulle være?
Avatar billede terrak Nybegynder
18. september 2005 - 20:47 #5
Kan du uddybe "kommer den med en fejl som var brugernavn/adgangskode forkert."? Hvad skriver den præcist?
Avatar billede thj-dk Nybegynder
18. september 2005 - 20:49 #6
Ja.
Altså den kører bare den her del af koden:
else {
header("Location: ../index.php?page=login_fejl");
}
Avatar billede polle007 Nybegynder
18. september 2005 - 20:51 #7
Den eneste fejl jeg lige kan få øje på, er at felterne i din html-form hedder noget andet
Avatar billede thj-dk Nybegynder
18. september 2005 - 20:53 #8
html formen ser således ud:

<form action="scr/scr_login.php" method="post">
    <p>Brugernavn:</p>
    <p><input type="text" name="username"/></p>
    <p>Adgangskode:</p>
    <p><input type="password" name="password"/></p>
    <p><input type="submit" name="submit" value="Login" class="submit"/></p>
</form>

Altså er de gode nok.
Avatar billede jgivoni Nybegynder
18. september 2005 - 21:10 #9
Jeg har afprøvet quote_smart() og den giver mig det forventede resultat - nemlig det jeg smider ind + anførselstegn.

Prøv at echo'e $_POST['username'] i starten. Indeholder den noget???
Avatar billede thj-dk Nybegynder
18. september 2005 - 21:13 #10
Ja den indeholder noget.

Ændrer jeg funktionen så den hedder:
    function quote_smart($value) {
      // Stripslashes
      if (get_magic_quotes_gpc()) {
          $value = stripslashes($value);
      }
      // Quote hvis det ikke er et heltal
      if (!is_numeric($value)) {
          $value = mysql_real_escape_string($value);
      }
      return $value;
    }

Får jeg godtnok:
echo $sql : SELECT fullN FROM users WHERE userN=username AND userP=password

Problemet er så bare det skulle være:
SELECT fullN FROM users WHERE userN='username' AND userP='password'

Men hvorfor det oprindelige ikke virker.....
Avatar billede thj-dk Nybegynder
18. september 2005 - 21:26 #11
Åh for .......

Jeg har løst problemet nu.
Det var noget med krypteringen af passwordet jeg havde glemt. Min fejl.

Hvis i lige opretter et svar, så fordeler jeg pointene fordi jeg har taget noget af jeres tid :)

Ellers tak for hjælpen.

Tommy.
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