<?php
include("connect.php");

$username=$_POST['username'];

$password=$_POST['password'];

$sql="SELECT * FROM admin WHERE username='$username' and password='$password'";

$result=mysql_query($sql);

// This counts to see how many rows were found, there should be no more than 1

$count=mysql_num_rows($result);

// If result matched $username and $password, table row must be 1

if($count==1){

// Register $myusername, and redirect to file "login_success.php"
session_start();
$_SESSION["logged"] = 1;
header("location:admin.php");
}
else {

$_SESSION["logged"] = 0;

echo "geen rechten!";

}

?>
Hier boven zie je mijn login.php script, alleen hij geeft de volgende error
mysql_num_rows(): supplied argument is not a valid MySQL

ik heb de foutmelding gegoogled maar werd er niet veel wijzer van
Ik zou iig van je query dit maken:

<?php

$sql="SELECT * FROM admin WHERE username= '" . $_POST["username"] . "' AND password= '" . $_POST["password"] . "'";

?>

Dan kun je die variablen weg halen en je moet je session_start() boven aan je pagina plaatsen
Foutafhandeling ontbreekt => Query zal mislukt zijn.
Script is lek => SQL-Injection.
Geen $vars zomaar copiëren.
$vars buiten de quotes houden.
Session_start() staat op een heel verkeerde plaats.
huh, maar waar zou ik session_start() dan neer moeten zetten? en weet iemand anders een goed tutorial die wel goed werkt??
Dat session_start(); hoort bovenaan in je PHPcode.
Verder kan je je script prima aanpassen hoor. je mist alleen wat belangrijke zaken.
<?php
session_start();
include("connect.php");

if(isset($_POST['submit'])) {
$sql = mysql_query("SELECT * FROM admin
WHERE username='". $_POST['username'] . "'
AND password='" . $_POST['password'] "'
LIMIT = 0,1");
if (mysql_num_rows($sql) > 0 {
while ($arr = mysql_fetch_array($sql)) {
// hier kun je nog meer sessies aanmaken
$_SESSION["logged"] = true;
header("Location: admin.php");
}

} else {

$_SESSION["logged"] = NULL;

echo "geen rechten!";
}
}
?>


Dit zou het kunnen worden
@Cas:
Foutafhandeling ontbreekt
Script is lek => SQL-Injection.
Waarom een overbodige while() gebruiken?
Er mist nog een }.
Wat ik ook doe hij blijft afketsen op de query bij het laatste script als hierboven krijg ik de error
syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
<?php
session_start();
include("connect.php");

if(isset($_POST['submit'])) {
$sql = mysql_query("SELECT * FROM admin
WHERE username='". $_POST['username'] . "'
AND password='" . $_POST['password'] . "'
LIMIT = 1");

if (mysql_num_rows($sql) > 0 ){

while ($arr = mysql_fetch_array($sql)) {
// hier kun je nog meer sessies aanmaken
$_SESSION["logged"] = true;
header("Location: admin.php");
}

} else {

$_SESSION["logged"] = NULL;

echo "geen rechten!";
}
}
?>
bij dit script begint hij weer te zeuren over de session_start();
ik dacht dat ik die nu wel goed had geplaatst
error:
session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

SanThe schreef op 19.05.2009 12:06
Foutafhandeling ontbreekt => Query zal mislukt zijn.

Heb je dit al ingebouwd?

Edit: Voor je header() probleem zie http://www.phphulp.nl/php/faq/#2
@SanThe

Op die while kun je via de $arr nog extra sessies toevoegen, zo heb ik het iig.

Reageren