Oprettet ons. d. 15. august 2012 kl. 16:52:35

llamalicious
llamalicious (1.580 point. Point ude: 120)

echo der ikke virker

<?php

if (isset ($_POST["brugernavn"]) &&isset ($_POST["password"])) {
    $brugernavn =$_POST["brugernavn"];
    $password = $_POST["password"];
   
    $password_hash = md5 ($password);

if (!empty ($brugernavn)&&!empty($password)) {
   
      $query = "SELECT 'id' FROM 'users' WHERE 'brugernavn'='$brugernavn' AND 'password' ='$password_hash'";
    if ($query_run = mysql_query ($query))  {
    $query_num_rows = mysql_num_rows($query_run);
   
    if ($query_num_rows==0) {
        echo "invalid brugernavn or password combination.";
    }else if ($query_num_rows==1) {
    echo $user_is = mysql_result ($query_run, 0, "id");
       
        }
    }
   
} else {
    echo "You must supply a brugernavn and password ";
}
}


?>


<form action="<?php echo $current_file; ?>" method="POST">
brugernavn: <input type="text" name ="brugernavn"> password: <input type="password" name="password" />
<input type="submit" value= "Log ind" />
</form>



Problem : De 2 første echo's virker ikke, men den 3. echo virker helt fint. Hvad er der galt? jeg forstår det ikke. Hvad er min dumme fejl?


på forhånd mange tak :)

Skrevet ons. d. 15. august 2012 kl. 16:55:47| #1

olebole
olebole (216.738 point)
<ole>

Begynd med at rykke din kode pænt ind. Ellers har du ikke mulighed for at overskue den - og vi andre gider ikke gøre det for dig  =)

/mvh
</bole>

Skrevet ons. d. 15. august 2012 kl. 17:10:37| #2

llamalicious
llamalicious (1.580 point)
Jeg er nybegynder. det er svært for mig det her. At pakke den ind er ikke mit første mål. man kan vel læse hvad der er, håber jeg :)

Håber der er en venlig sjæl der vil prøve at overskue mit rod så jeg kan komme lidt videre med det. Mange tak :)

Skrevet ons. d. 15. august 2012 kl. 17:13:32| #3

llamalicious
llamalicious (1.580 point)
Jeg er nybegynder. det er svært for mig det her. At pakke den ind er ikke mit første mål. man kan vel læse hvad der er, håber jeg :)

Håber der er en venlig sjæl der vil prøve at overskue mit rod så jeg kan komme lidt videre med det. Mange tak :)

Skrevet ons. d. 15. august 2012 kl. 17:19:09| #4

llamalicious
llamalicious (1.580 point)
<?php

if (isset ($_POST["brugernavn"]) &&isset ($_POST["password"])) {
    $brugernavn = $_POST["brugernavn"];
    $password = $_POST["password"];
    $password_hash = md5($password);

if (!empty ($brugernavn)&&!empty($password)) {
   
$query = "SELECT 'id' FROM 'users' WHERE 'brugernavn'='$brugernavn' AND 'password' ='$password_hash'";
 
if ($query_run = mysql_query ($query))  {
                $query_num_rows = mysql_num_rows($query_run);
   
        if ($query_num_rows==0) {
              echo "invalid brugernavn or password combination.";
               
}else if ($query_num_rows==1) {
                    $user_is = mysql_result ($query_run, 0, "id");       
}
}
   
}else{
    echo "You must supply a brugernavn and password ";
}
}

?>

<form action="<?php echo $current_file; ?>" method="POST">

brugernavn: <input type="text" name ="brugernavn"> password:

<input type="password" name="password" />

<input type="submit" value= "Log ind" />

</form>

Skrevet ons. d. 15. august 2012 kl. 17:20:22| #5

llamalicious
llamalicious (1.580 point)
Beklager mit spam. :/
Har prøvet at rydde lidt op i det så det er lidt nemmere for folk at se. Håber det er ok. Please hjæælp :D


Mange tak :)

Skrevet ons. d. 15. august 2012 kl. 17:54:44| #6

olebole
olebole (216.738 point)
Sådan ser koden ud, når den er overskueligt sat op:

if (isset ($_POST["brugernavn"]) &&isset ($_POST["password"])) {
    $brugernavn =$_POST["brugernavn"];
    $password = $_POST["password"];
   
    $password_hash = md5 ($password);

    if (!empty ($brugernavn)&&!empty($password)) {
   
        $query = "SELECT 'id' FROM 'users' WHERE 'brugernavn'='$brugernavn' AND 'password' ='$password_hash'";
        if ($query_run = mysql_query ($query))  {
            $query_num_rows = mysql_num_rows($query_run);
   
            if ($query_num_rows==0) {
                echo "invalid brugernavn or password combination.";
            }
            else if ($query_num_rows==1) {
                echo $user_is = mysql_result ($query_run, 0, "id");
            }
        }
   
    } else {
        echo "You must supply a brugernavn and password ";
    }
}

Læg mærke til, at du nu kan se, hvad der hører med til de enkelte if/else sætninger  *o)

Den eneste fejl, jeg umiddelbart kan få øje på er den næstsidste if, som burde se sådan ud:

[div]            else if ($query_num_rows==1) {
                $user_is = mysql_result ($query_run, 0, "id");
                echo $user_is;
            }div]
Hvis det stadig ikke virker, må fejlen ligge i koden i kombination med databaseindholdet - som vi jo ikke kan se

Skrevet ons. d. 15. august 2012 kl. 17:55:38| #7

olebole
olebole (216.738 point)
Ups ... prøver lige igen  =)

else if ($query_num_rows==1) {
                $user_is = mysql_result ($query_run, 0, "id");
                echo $user_is;
            }

Skrevet ons. d. 15. august 2012 kl. 19:21:36| #8

tobrukDk
tobrukDk (2.145 point)
og Hvis du er ny til php, så skulle du nok ikke have snart på mysql. det kan godt være jeg har gjort det for længe siden men jeg synes du skal lærer de mest brugt ting inde for php :)

Skrevet tor. d. 16. august 2012 kl. 09:16:58| #9

@tobrukDk: Og MySQL bliver, ifølge dig, ikke brugt særlig meget sammen med PHP? :P

Derudover kommer det an på, hvordan du som person bedst indlærer ting. Tag mig fx, jeg kaster mig bare ud i tingene og lærer det på den hårde måde. Når jeg så selv har fået mig en grundviden, begynder jeg at læse teorien på det. Skulle jeg gøre det omvendt ville det tage mig dobbelt så lang tid at lære det.

At det så højst sandsynligt skyldes at jeg ikke er kendt for min tålmodighed, behøver vi ikke tale om. :)

Skrevet fre. d. 17. august 2012 kl. 11:36:39| #10

vagnk
vagnk (19.030 point)
Nedenstående bliver kun eksekveret hvis der er værdier i BÅDE $brugernavn OG $password
if (!empty ($brugernavn)&&!empty($password))

Det må betyde at enten det ene eller det andet eller begge er tomt. Prøv en echo lige efter du har sat værdierne ind fra $_POST.

Du kan osse prøve at bruge method='get' i den kaldende side så du i adresselinjen kan se om der f.eks. står "?brugernavn=&password=". Hvis det er tilfældet er det dine felter i den kaldende side den er gal med.

Skrevet fre. d. 17. august 2012 kl. 14:14:55| #11

olebole
olebole (216.738 point)
Det er nok nærmere SQL'en, der skal rettes. Det kan være en stor fordel at anvende backticks omkring felt- og tabelnavne - men endelig ikke apostroffer:

$query = "SELECT 'id' FROM 'users' WHERE 'brugernavn'='$brugernavn' AND 'password' ='$password_hash'";

- skal se sådan ud:

$query = "SELECT `id` FROM `users` WHERE `brugernavn`='$brugernavn' AND `password` ='$password_hash'";

Derudover kan du, hvis du stiller koden lidt anderledes op, få udskrevet MySQL-fejl, som havde fortalt, at det var i SQL'en, fejlen lå:

if (isset ($_POST["brugernavn"]) &&isset ($_POST["password"])) {
    $brugernavn =$_POST["brugernavn"];
    $password = $_POST["password"];

    if (!empty ($brugernavn)&&!empty($password)) {
   
        $password_hash = md5 ($password);
   
        $query = "SELECT `id` FROM `users` WHERE `brugernavn`='$brugernavn' AND `password` ='$password_hash'";
        $query_run = mysql_query ($query) or die (mysql_error());
        $query_num_rows = mysql_num_rows($query_run);

        if ($query_num_rows==0) {
            echo "invalid brugernavn or password combination.";
        }
        else if ($query_num_rows==1) {
            $user_is = mysql_result ($query_run, 0, "id");
            echo $user_is;
        }
   
    } else {
        echo "You must supply a brugernavn and password ";
    }
}

Men pas på med fejlmeldinger! De kan give hackere vigtige og farlige informationer. Prøv at læse denne guide om emnet

Skrevet fre. d. 17. august 2012 kl. 14:20:58| #12

olebole
olebole (216.738 point)
Men når nu vi har fat i hackere, så er din kode katastrofal, hvad sikkerhed angår. Din database står pivåben for angreb, hvor den så let som ingenting kan læses, ændres eller slettes.

Det MySQL-API, du anvender, er i udgangspunktet forkert konstrueret og er forlængst forældet. I dag bruger man prepared statements og MySQLI (eller PDO), når PHP skal tale med databaser. Du kan prøve at kikke på denne guide om emnet

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Hjælp til database kolonne

Oprettet den 22. maj 2013 kl. 17.44
StotheT giver 30 point for svar | Giv et svar »

opret tabel og insert

Oprettet den 22. maj 2013 kl. 14.10
agent_qa giver 60 point for svar | Giv et svar »

WordPress husker stadig gamle stier, efter skift af URL

Oprettet den 22. maj 2013 kl. 14.08
w13 giver 70 point for svar | Giv et svar »

Seneste guides

Slettet
Håndtering af tekstoversættelse i...
Parameteriseret tekstformatering i C#
C++ Historie og Programmering - Del 1







Tips & Tricks fra PC World

Teaser billede

Her er seks Google Labs-funktioner, som du skal slå til med det samme

Gmail Labs giver dig adgang til en masse smarte funktioner, som Googles ingeniører leger med i øjeblikket.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du få 1 terabyte gratis plads hos Flickr

Yahoo har relanceret sin fototjeneste Flickr med 1 terabyte gratis plads til brugernes billeder og videoer.


Nyheder fra Computerworld

Teaser billede

Galleri: Her er de vigtigste programmører

Computerhistorien har fra hulkort til JavaScript været drevet frem af mange forskellige typer programmører. Se de vigtigste typer her. Er du en af dem?


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger