WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Funderingar på vilken kod!?!? (https://www.wn.se/forum/showthread.php?t=29824)

xbreaker 2008-06-10 04:07

Tjena, precis börjat leka lite med inloggning i php med hjälp av MySQL.

Men under mitt programmerande så märkte jag att jag kan välja mellan två "function".
Nedan är mitt inloggnings script


Kod:

<?php
$username = $_POST['username'];
$password = $_POST['password'];

$connection = mysql_connect ("localhost", "root", "++++");
mysql_select_db ("my_db",$connection);

$person = mysql_query("SELECT * FROM person WHERE username = '$username' AND password = '$password'");

if (mysql_num_rows($person))
        {
        echo "Login Successfully!";
        }
else
        {
        echo "Bad Username or Password <br /> <a href='javascript:history.go(-1)'>To login</a>";
        }
       
?>

if sattsen i slutet är nu

Kod:

if (mysql_num_rows($person))
Den kunde jag byta ut mot tex.

Kod:

if (mysql_fetch_array($person))
Här kommer frågan, vilken av dessa två skall jag använda eller skall jag skriva nått helt annat?

Ganska ny på detta men börjar komma igång nu:)

Ha det gött:) ;)

wooper 2008-06-10 04:31

Hej,

Jag rekommenderar dig att köra på alternativ två: "if (mysql_fetch_array($person))"

Detta för att du kollar om den angivna "användaren" finns i databasen, samma gör "mysql_num_rows" men de matchar alla användare med inmatade kriterier från formuläret.

Om du vill kan du lägga in, under "$person = mysql_query("SELECT * FROM person WHERE username = '$username' AND password = '$password'");"

// Hittades inte användarnamn och lösenord
// skicka till formulär med felmeddelande
if (mysql_num_rows($person) == 0){ // Alltså, ingen träff, vad gör vi då?
header("Location: login.php?badlogin="); // Flyttar användaren till en annan sida / eller samma sida med ett felmedellande.
exit;
}

wooper 2008-06-10 04:34

<?php
$username = $_POST['username'];
$password = $_POST['password'];

$connection = mysql_connect ("localhost", "root", "++++");
mysql_select_db ("my_db",$connection);

$person = mysql_query("SELECT * FROM person WHERE username = '$username' AND password = '$password'");

// Ändrat **
if (mysql_num_rows($person) == 0){ //Inga träffar....
header("Location: login.php?badlogin="); // Flytta till en ny sida.
exit; // Avsluta vidare kod.
}


if (mysql_fetch_array($person))
// Slut på ändring **
{
echo "Login Successfully!";
}

/* Ändrat Bortkommenterat då ett nytt "Felmeddelande" lagts in.
else
{
echo "Bad Username or Password
<a href='javascript:history.go(-1)'>To login</a>";
}
Slut på ändring */
?>

xbreaker 2008-06-10 05:19

Citat:

Originally posted by wooper@Jun 10 2008, 04:34
?php
username = _POST[username];
password = _POST[password];
connection = mysql_connect (localhost, root, ++++);
mysql_select_db (my_db,connection);
person = mysql_query(SELECT * FROM person WHERE username = username AND password = password);
// Ändrat **
if (mysql_num_rows(person) == 0){ //Inga träffar....
header(Location: login.php?badlogin=); // Flytta till en ny sida.
exit; // Avsluta vidare kod.
}

if (mysql_fetch_array(person))
// Slut på ändring **
{
echo Login Successfully;
}
/* Ändrat Bortkommenterat då ett nytt Felmeddelande lagts in.
else
{
echo Bad Username or Password br / a href=javascript:history.go(-1)To login/a;
}
Slut på ändring */
?


aaah. Tack för snabbt tydligt svar:)...

jonny 2008-06-10 08:36

Läs på lite om sql injection också.


Alla tider är GMT +2. Klockan är nu 11:32.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson