Avatar billede hathor Nybegynder
01. august 2006 - 20:17 Der er 25 kommentarer og
1 løsning

Login virker ikke

<?php
session_start();
$db = mysql_connect("xxxxxxx", "xxxx", "xxxxx");
mysql_select_db("xxxxxxx", $db);



if($submit)
  {
$result = mysql_query("select pass, bruger from brugere where bruger='$usr'") or die(mysql_error());

    while($row = mysql_fetch_array($result)) // linie 16
        {
              $password = $row['pass'];
              $nick = $row['nick'];
             
    }

   
    if($pass == $password && $nick == $usr)
      {
        session_register("$usr");
       
       
        echo 'logget ind'; 
       
      }


      else
      {


echo "<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"></head><body background=\"../pics/bg1.gif\">";
echo "To log in, enter your username and password in the designated boxes.";
echo "<br>";

echo "<form action=\"$PHP_SELF\">";
echo "Username:<br><input type=\"text\" name=\"usr\"><br>Password:<br><input type=\"password\" name=\"pass\"><br><br><input type=\"submit\" name=\"submit\" value=\"submit\">";
echo "</form></body></html>";

echo $pass;
echo '<p>';
echo $nick;     
     
     
     
      }


  }

else
  {
echo "<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"></head><body background=\"../pics/bg1.gif\">";
echo "To log in, enter your username and password in the designated boxes.";
echo "<br>";

echo "<form action=\"$PHP_SELF\">";
echo "Username:<br><input type=\"text\" name=\"usr\"><br>Password:<br><input type=\"password\" name=\"pass\"><br><br><input type=\"submit\" name=\"submit\" value=\"submit\">";
echo "</form></body></html>";
  }



echo '<html>';
echo '<body>';
echo '<a href=\"side.php\">test</a>';
echo '</body>';
echo '</html>';
php?>

Når jeg bruger dette script, så logges der ikke ind, den går til else funktionen. Klikker jeg så på login een gang til med blanke boxe, logger den ind og skriver 'logged in'.

Jeg er ikke særligt god til dette her, og gør det som en tjeneste for en anden - så hvis I dør af grin beklager jeg.
Avatar billede hathor Nybegynder
01. august 2006 - 20:18 #1
Sorry for at få min kommentar postet nederst.
Avatar billede hathor Nybegynder
01. august 2006 - 20:20 #2
okay, jeg fandt ud af at hvis man klikker på login anden gang, så logger den ind, uanset hvad man har skrevet i boksene.
Avatar billede nielle Nybegynder
01. august 2006 - 21:11 #3
Start med at sætte method='post' på dine forms.

Dernæst bruger du $_POST["usr"] og $_POST["password"] til at spørge på værdierne fra dine submittede forms.

Endelig ændre du name-attributten på din submitknapper sådan at de *ikke* hedder "submit".
Avatar billede hathor Nybegynder
01. august 2006 - 21:29 #4
Kan du skære det lidt mere ud i pap? :)
Avatar billede hathor Nybegynder
01. august 2006 - 21:35 #5
det er den der med $_post jeg ikke forstår
Avatar billede nielle Nybegynder
01. august 2006 - 21:41 #6
1) Dine forms har ingen method-attribut på. Det skal de have, og jeg foreslår at du vælger "post" (alternativet er "get").

Dette betyder kort sagt at du skal rette dine form-relaterede linjer, fra:

echo "<form action=\"$PHP_SELF\">";

- til:

echo "<form action=\"$PHP_SELF\" method='post'>";


2) Når du har gjort dette, vil det der er skrevet i input-felterne i formen efterfølgende kunne aflæses som:

$_POST["usr"] og $_POST["password"]

Du bruger imidlertid $usr og $password. Dette har virket i tidligere versioner af PHP, og det gør det stadig en del steder. Hvis dem som har installeret den pågældende PHP ved hvad det er de har med at gøre så dur $usr og $password imidlertid ikke mere, og det vil derfor give dig en fejl hvis du fortsætter med at bruge dem.


3) Endelig har du sat name-attributten af dine submit-knapper til at hedde "submit":

... <input type=\"submit\" name=\"submit\" value=\"submit\">"; ...

Det er absolut ikke en god ide, og det vil fejle afhængiog af hvilken browser folk bruger. Brug derfor et andet navn:

... <input type=\"submit\" name=\"etAndetNavnHer\" value=\"submit\">"; ...
Avatar billede hathor Nybegynder
01. august 2006 - 21:52 #7
okay .. Jeg er næsten med, men ikke helt .. Du har helt ret i, at det var i gamle dage man gjorde som jeg skriver, for det er nemlig noget jeg har skrevet for lang tid siden jeg prøver at få til at virke.


Hvad skal dette her ændres til? Jeg forstår det ikke helt ..
$result = mysql_query("select pass, bruger from brugere where bruger='$usr'") or die(mysql_error());

    while($row = mysql_fetch_array($result)) // linie 16
        {
              $password = $row['pass'];
              $nick = $row['nick'];
             
    }
Avatar billede nielle Nybegynder
01. august 2006 - 21:55 #8
Denne:

$result = mysql_query("select pass, bruger from brugere where bruger='$usr'") or die(mysql_error());

- rettes til:

$result = mysql_query("select pass, bruger from brugere where bruger='$_POST[usr]'") or die(mysql_error());
Avatar billede nielle Nybegynder
01. august 2006 - 21:56 #9
... eller til:

$usr = $_POST['usr'];
$result = mysql_query("select pass, bruger from brugere where bruger='$usr'") or die(mysql_error());
Avatar billede hathor Nybegynder
01. august 2006 - 22:07 #10
Nu går den hele tiden til den første form.

Du kan se her: www.promenadehuset.dk

den går ikke til fejl eller noget som helst, den reloader den første side.
Avatar billede hathor Nybegynder
01. august 2006 - 22:10 #11
Jeg har oprettet en enkelt bruger i databasen

bruger: Preben
pass: itx56y
Avatar billede nielle Nybegynder
01. august 2006 - 22:16 #12
Hvordan ser din kode ud nu?
Avatar billede hathor Nybegynder
01. august 2006 - 22:24 #13
<?php
session_start();
$db = mysql_connect("xxxxxxxxxx", "xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx");
mysql_select_db("xxxxxxxxxxxxxx", $db);



if($submit)
  {
$usr = $_POST['usr'];
$result = mysql_query("select pass, bruger from brugere where bruger='$usr'") or die(mysql_error());

    while($row = mysql_fetch_array($result)) // linie 16
        {
              $password = $row['pass'];
              $nick = $row['nick'];
             
    }

   
    if($pass == $password && $nick == $usr)
      {
        session_register("$usr");
       
       
        echo 'logget ind'; 
       
      }


      else
      {




echo 'dette er elsen';
echo "<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"></head><body background=\"../pics/bg1.gif\">";
echo "To log in, enter your username and password in the designated boxes. If you are not yet a registred user, sign up <a href=\"signup.php\">here</a>.";
echo "<br>";

echo "<form action=\"$PHP_SELF\" method='post'>";
echo "Username:<br><input type=\"text\" name=\"usr\"><br>Password:<br><input type=\"password\" name=\"pass\"><br><br><input type=\"submit\" name=\"knap\" value=\"submit\">";
echo "</form></body></html>";

echo $pass;
echo '<p>';
echo $nick;     
     
     
     
      }


  }

else
  {
echo "<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"></head><body background=\"../pics/bg1.gif\">";
echo "To log in, enter your username and password in the designated boxes. If you are not yet a registred user, sign up <a href=\"signup.php\">here</a>.";
echo "<br>";

echo "<form action=\"$PHP_SELF\" method='post'>";
echo "Username:<br><input type=\"text\" name=\"usr\"><br>Password:<br><input type=\"password\" name=\"pass\"><br><br><input type=\"submit\" name=\"knap\" value=\"submit\">";
echo "</form></body></html>";
  }



echo '<html>';
echo '<body>';
echo '<a href=\"side.php\">test</a>';
echo '</body>';
echo '</html>';
php?>
Avatar billede nielle Nybegynder
01. august 2006 - 22:27 #14
I denne linje:

if ($pass == $password && $nick == $usr)

- bruger du $password. Lige som med $usr så skal denne hentes via $_POST["password"].
Avatar billede nielle Nybegynder
01. august 2006 - 22:30 #15
Jeg vil iøvrigt anbefale ret kraftigt at du gør noget for at stille din kode pænt op. Det gør underværker for at gennemskue og læse koden, og dermed også for at vedligeholde den:

<?php
session_start();

$db = mysql_connect("xxxxxxxxxx", "xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx");
mysql_select_db("xxxxxxxxxxxxxx", $db);

if ($submit)
{
    $usr = $_POST['usr'];
    $password $_POST['password'];

    $result = mysql_query("select pass, bruger from brugere where bruger='$usr'") or die(mysql_error());

    while ($row = mysql_fetch_array($result)) // linie 16
    {
        $password = $row['pass'];
        $nick = $row['nick'];
    }

    if ($pass == $password && $nick == $usr)
    {
        session_register("$usr");
        echo 'logget ind'; 
    }
    else
    {
        echo 'dette er elsen';
        echo "<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"></head><body background=\"../pics/bg1.gif\">";
        echo "To log in, enter your username and password in the designated boxes. If you are not yet a registred user, sign up <a href=\"signup.php\">here</a>.";
        echo "<br>";

        echo "<form action=\"$PHP_SELF\" method='post'>";
        echo "Username:<br><input type=\"text\" name=\"usr\"><br>Password:<br><input type=\"password\" name=\"pass\"><br><br><input type=\"submit\" name=\"knap\" value=\"submit\">";
        echo "</form></body></html>";

        echo $pass;
        echo '<p>';
        echo $nick;
    }
}
else
{
    echo "<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"></head><body background=\"../pics/bg1.gif\">";
    echo "To log in, enter your username and password in the designated boxes. If you are not yet a registred user, sign up <a href=\"signup.php\">here</a>.";
    echo "<br>";

    echo "<form action=\"$PHP_SELF\" method='post'>";
    echo "Username:<br><input type=\"text\" name=\"usr\"><br>Password:<br><input type=\"password\" name=\"pass\"><br><br><input type=\"submit\" name=\"knap\" value=\"submit\">";
    echo "</form></body></html>";
}

echo '<html>';
echo '<body>';
echo '<a href=\"side.php\">test</a>';
echo '</body>';
echo '</html>';
php?>
Avatar billede nielle Nybegynder
01. august 2006 - 22:30 #16
... og:

$password $_POST['password'];

- skal vist lige rettes til:

$password = $_POST['password'];
Avatar billede hathor Nybegynder
01. august 2006 - 22:40 #17
jeg sætter stor pris på din hjælp - men det virker stadig ikke. Den gør stadig det samme .. Jeg har brugt din kode fra 22:30:18 med rettelsen 22:30:52, og den gør det stadig.

Måske jeg glemmer noget.
Avatar billede nielle Nybegynder
01. august 2006 - 22:45 #18
Ok, jeg kan se at du har omdøbt submit-knapperne. Det er som det skal være, men du har ikke modifiseret den kode som afhænger af denne ændring:

if ($submit)

- skal rettes til:

if (isset($_POST["knap"]))
Avatar billede hathor Nybegynder
01. august 2006 - 22:50 #19
ah for satan
Avatar billede hathor Nybegynder
01. august 2006 - 22:53 #20
nu går den så direkte til elsen som om man har indtastet forkert bruger/kode ..

her er den kode jeg bruger nu .. OG hvis du vil i seng, så forstår jeg sq godt det. det er noget bøvl det her.

<?php
session_start();
$db = mysql_connect("xxxxxxxx", "xxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx");
mysql_select_db("xxxxxxxxxxxxxx", $db);


if (isset($_POST["knap"]))
{
    $usr = $_POST['usr'];
    $password = $_POST['password'];

    $result = mysql_query("select pass, bruger from brugere where bruger='$usr'") or die(mysql_error());

    while ($row = mysql_fetch_array($result)) // linie 16
    {
        $password = $row['pass'];
        $nick = $row['nick'];
    }

    if ($pass == $password && $nick == $usr)
    {
        session_register("$usr");
        echo 'logget ind'; 
    }
    else
    {
        echo 'dette er elsen';
        echo "<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"></head><body background=\"../pics/bg1.gif\">";
        echo "To log in, enter your username and password in the designated boxes. If you are not yet a registred user, sign up <a href=\"signup.php\">here</a>.";
        echo "<br>";

        echo "<form action=\"$PHP_SELF\" method='post'>";
        echo "Username:<br><input type=\"text\" name=\"usr\"><br>Password:<br><input type=\"password\" name=\"pass\"><br><br><input type=\"submit\" name=\"knap\" value=\"submit\">";
        echo "</form></body></html>";

        echo $pass;
        echo '<p>';
        echo $nick;
    }
}
else
{
    echo "<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"></head><body background=\"../pics/bg1.gif\">";
    echo "To log in, enter your username and password in the designated boxes. If you are not yet a registred user, sign up <a href=\"signup.php\">here</a>.";
    echo "<br>";

    echo "<form action=\"$PHP_SELF\" method='post'>";
    echo "Username:<br><input type=\"text\" name=\"usr\"><br>Password:<br><input type=\"password\" name=\"pass\"><br><br><input type=\"submit\" name=\"knap\" value=\"submit\">";
    echo "</form></body></html>";
}

echo '<html>';
echo '<body>';
echo '<a href=\"side.php\">test</a>';
echo '</body>';
echo '</html>';
php?>
Avatar billede nielle Nybegynder
01. august 2006 - 22:55 #21
Vi fortsætter da bare imorgen :^)
Avatar billede hathor Nybegynder
01. august 2006 - 23:11 #22
det ville være stort :)
Avatar billede hathor Nybegynder
02. august 2006 - 09:28 #23
Jeg fik det til at virke.
Det var denne linie det var galt med $nick = $row['nick']; .. jeg bruger ikke nick i databasen, men bruger!

Smid et svar!
Avatar billede nielle Nybegynder
02. august 2006 - 09:45 #24
Heh, ja det kan jeg jo også se af din SELECT.

$result = mysql_query("SELECT pass, bruger FROM brugere WHERE bruger='$usr'") or die(mysql_error());

Det er iøvrigt rigtigt fint at du kun henter de værdier du skal bruge. Alt for tit ser man at folk SELECT'er på *.

Forresten behøver du jo slet ikke at udtrække bruger - den må jo nødvendigvis være identisk med $usr.
Avatar billede nielle Nybegynder
02. august 2006 - 09:53 #25
Som en afsluttende bemærkning synes jeg at du skal lave din while-løkke om - den skal jo kun køre en gang (while bruger man normalt nor man ikke på forhånd ved hvor mange gange løkken vil gennemløbes).

Til noget i denne stil:

    $usr = $_POST['usr'];
    $password $_POST['password'];

    $result = mysql_query("SELECT pass FROM brugere WHERE bruger='$usr'") or die(mysql_error());

    if (mysql_num_rows($result) == 1)
    {
        $row = mysql_fetch_assoc($result));
        $password = $row['pass'];
    }
Avatar billede nielle Nybegynder
02. august 2006 - 09:53 #26
... og et svar :^)
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