Nyt olisi ylimääräinen silmäpari tarpeen. Osaako kukaan kertoa mitä vikaa alla olevassa koodissa on? Koodin pitäisi tarkistaa löytyykö käyttäjänimi ja salasana tietokannasta, jos löytyy niin salattu.php sivu pitäisi aueta. Nyt en kuitenkaan pääse kirjautumissivusta eteenpäin vaikka käyttäjänimi ja salasana ovat oikein.
login_form.php
<?php
mysql_connect("localhost", "käyttäjänimi", "salasana") or die(mysql_error());
mysql_select_db("tietokanta") or die(mysql_error());
$username = mysql_real_escape_string($_POST["username"]);
$password = mysql_real_escape_string(md5($_POST["password"]));
$select_user = mysql_query("SELECT username, password FROM users WHERE username='$username' AND password='$password'");
if (mysql_num_rows($select_user) != 0)
{
session_start();
session_register('authorized');
$_SESSION['authorized'] = true;
header("Location: salattu.php");
exit;
}
else
{
header("Location: login_form.php");
exit;
}
?>
Kokeilisin noin:$select_user = mysql_query("SELECT username, password FROM users WHERE username='".$username."' AND password='".$password."'");
On sellainen kutina että yksinkertaisessa lainausmerkissä ei muuttujaa laajenneta.
Helppo tapa tarkistaa:
echo "SELECT username, password FROM users WHERE username='".$username."' AND password='".$password."'";
ja
echo "SELECT username, password FROM users WHERE username='"username' AND password='$password'";