Avatar billede llamalicious Nybegynder
15. august 2012 - 16:52 Der er 12 kommentarer

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 :)
Avatar billede olebole Juniormester
15. august 2012 - 16:55 #1
<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>
Avatar billede llamalicious Nybegynder
15. august 2012 - 17:10 #2
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 :)
Avatar billede llamalicious Nybegynder
15. august 2012 - 17:13 #3
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 :)
Avatar billede llamalicious Nybegynder
15. august 2012 - 17:19 #4
<?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>
Avatar billede llamalicious Nybegynder
15. august 2012 - 17:20 #5
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 :)
Avatar billede olebole Juniormester
15. august 2012 - 17:54 #6
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
Avatar billede olebole Juniormester
15. august 2012 - 17:55 #7
Ups ... prøver lige igen  =)

else if ($query_num_rows==1) {
                $user_is = mysql_result ($query_run, 0, "id");
                echo $user_is;
            }
Avatar billede tobrukDk Novice
15. august 2012 - 19:21 #8
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 :)
Avatar billede DeeDawg Nybegynder
16. august 2012 - 09:16 #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. :)
Avatar billede vagnk Juniormester
17. august 2012 - 11:36 #10
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.
Avatar billede olebole Juniormester
17. august 2012 - 14:14 #11
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
Avatar billede olebole Juniormester
17. august 2012 - 14:20 #12
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
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