Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Login problem

1 view
Skip to first unread message

karl...@gmail.com

unread,
Sep 7, 2008, 9:00:32 AM9/7/08
to
Hei.
Jeg har et innloggingsskjema for å logge inn på et "sperra" området.

Jeg bruker PHP 5.2.6
og Mysql 5.0.51b
(Apache på Windows Vista)

Her er påloggingsskriptet:

if(isset($_POST['login'])){

// Koble til og velg database
include ('oppkobling.inc');
// utfør spørring og behandle data
$sql = "SELECT * FROM brukere";
$sql .= "WHERE brukernavn ='" . $_POST['brukernavn'] . "' ";
$sql .= "AND passord='" . $_POST['passord'] . "' ";
$resultat = mysql_query($sql, $dblink);
if(mysql_num_rows($resultat) != 0){
echo "OK!";
} else {
echo "FEIL";
}
}

Men dette genererer følgende feilmelding:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL
result resource in D:\xampp\htdocs\index.php on line 42
FEIL

Hva er feil i koden min?

Takk for all hjelp.

Mvh Karl

Joachim Mæland

unread,
Sep 7, 2008, 10:11:07 AM9/7/08
to
On Sun, 07 Sep 2008 06:00:32 -0700, karlarneg wrote:

> Hei.
> Jeg har et innloggingsskjema for å logge inn på et "sperra" området.

[..]


> Men dette genererer følgende feilmelding:
>
> Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
> resource in D:\xampp\htdocs\index.php on line 42 FEIL
>
> Hva er feil i koden min?

Du har åpnet for SQL injection og bør snarest lese PHP-maualen om
mysql_real_escape_string. Seriøst; dette skal du absolutt IKKE TA LETT
PÅ...!

Videre kan det være lurt å sjekke spørringer f.eks. med eksemplene fra
manualens avsnitt om mysql_query... (Selv om jeg tipper feilen er et
manglende mellomrom mellom «SELECT * FROM brukere"» og «"WHERE»)

"
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for
debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
"

--
Regards/mvh Joachim Mæland

If everything seems under control, you're just not going fast enough.
-Mario Andretti

karl...@gmail.com

unread,
Sep 7, 2008, 11:20:38 AM9/7/08
to
On 7 Sep, 16:11, Joachim Mæland <jm-n...@profine.net> wrote:
> On Sun, 07 Sep 2008 06:00:32 -0700, karlarneg wrote:
> > Hei.
> > Jeg har et innloggingsskjema for å logge inn på et "sperra" området.
> [..]
> > Men dette genererer følgende feilmelding:
>
> > Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
> > resource in D:\xampp\htdocs\index.php on line 42 FEIL
>
> > Hva er feil i koden min?
>
> Du har åpnet for SQL injection og bør snarest lese PHP-maualen om
> mysql_real_escape_string. Seriøst; dette skal du absolutt IKKE TA LETT
> PÅ...!
>
Er dette nok for å unngå SQL injection?

$sql = "SELECT * FROM brukere";
$sql .= " WHERE brukernavn ='" .

mysql_escape_string($_POST["brukernavn"]) . "' ";
$sql .= " AND passord='" . mysql_escape_string($_POST["passord"]) .
"' ";
$resultat = mysql_query($sql, $dblink);

mvh Karl

Joachim Mæland

unread,
Sep 8, 2008, 5:55:48 AM9/8/08
to
On Sun, 07 Sep 2008 08:20:38 -0700, karlarneg wrote:

> Er dette nok for å unngå SQL injection?

[..]


> $sql .= " AND passord='" . mysql_escape_string($_POST
> ["passord"]) .

Ja, men som du bør ha fått med deg:

"ChangeLog

Version Description
4.3.0 This function became deprecated, do not use this function.
Instead, use mysql_real_escape_string()."

Videre:

"mysql_escape_string() does not take a connection argument and does not
respect the current charset setting."

Det siste er ikke nødvendigvis med på å gjøre æøå-problematikk enklere.
Forøvrig ville jeg forsøkt å styre unna direkte bruk av GET/POST-
variabler sammen med MySQL, (ellers også, når jeg tenker meg om), og så
langt som praktisk mulig også sjekke innholdet i variablene, før de blir
forsøkt gjort sikrere ved escaping. Det ER mange slemminger der ute...

0 new messages