Kirjoittaja Aihe: Mysql ongelma, kirjautumissivu ei toimi  (Luettu 3379 kertaa)

haspu

  • Käyttäjä
  • Viestejä: 96
    • Profiili
Mysql ongelma, kirjautumissivu ei toimi
« : 20.01.11 - klo:20.09 »
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

Koodia: [Valitse]
<?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;

}
?>


jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Mysql ongelma, kirjautumissivu ei toimi
« Vastaus #1 : 20.01.11 - klo:20.46 »
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

Koodia: [Valitse]
<?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'";


haspu

  • Käyttäjä
  • Viestejä: 96
    • Profiili
Vs: Mysql ongelma, kirjautumissivu ei toimi
« Vastaus #2 : 20.01.11 - klo:21.21 »
Tämä tuntuu olevan oikea tapa mutta en vieläkään pääse eteenpäin.
echo "SELECT username, password FROM users WHERE username='".$username."' AND password='".$password."'";

Voisiko vika olla tässä koodissa

salattu.php
Koodia: [Valitse]
<?php
if ($_SESSION['authorized'] != true
{
    
header("Location: login_form.php");
    exit;
}
?>

<html>
<body>
Testi...
</body>
</html>

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Mysql ongelma, kirjautumissivu ei toimi
« Vastaus #3 : 22.01.11 - klo:08.06 »
Tämä tuntuu olevan oikea tapa mutta en vieläkään pääse eteenpäin.
echo "SELECT username, password FROM users WHERE username='".$username."' AND password='".$password."'";

Voisiko vika olla tässä koodissa

salattu.php
Koodia: [Valitse]
<?php
if ($_SESSION['authorized'] != true
{
    
header("Location: login_form.php");
    exit;
}
?>

<html>
<body>
Testi...
</body>
</html>


Mitä ilmeisimmin se härö majailee sitten tuon session käsittelyssä. (Jos siis olet varmistanut että se kantayhteys toimii kuten uskot)
Kaipa joku tuntee myös sessioiden salatun elämän ;(

Mihon menee kun/jos kirjoitat osoiteriville tuon login_form.php:n?


peran

  • Vieras
Vs: Mysql ongelma, kirjautumissivu ei toimi
« Vastaus #4 : 22.01.11 - klo:08.29 »
Koodia: [Valitse]
<?php
if ($_SESSION['authorized'] != true
{
    
header("Location: login_form.php");
    exit;
}
?>

<html>
<body>
Testi...
</body>
</html>

Sitten vain debuggaamaan...
Koodia: [Valitse]
<?php
echo $_SESSION['authorized'];
if (
$_SESSION['authorized'] != true
{
    
header("Location: login_form.php");
    exit;
}
?>

<html>
<body>
Testi...
</body>
</html>

Koodia: [Valitse]
<?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;
    echo 
"Yrittää mennä salattuun...";
    
header("Location: salattu.php");
    exit;

else 
{
    
header("Location: login_form.php");
    exit;

}
?>

Molemmissa debuggauksissa tulee header-errori, mutta näätpähän vähän rajoittaa ongelmaa...

Edit - Muuten käyttäisin PDO:ta tietokannoissa, jos et ole kirjoittanut pitkiä stooreja vanhentuneella tavalla.

Edit 2 - ... ja käyttäisin suolaa salasanassa Esim. $password = mysql_real_escape_string(md5($_POST["password"].$_POST["user"]."lisää suolaa"));
« Viimeksi muokattu: 22.01.11 - klo:08.37 kirjoittanut peran »

Stargazers

  • Käyttäjä
  • Viestejä: 549
    • Profiili
Vs: Mysql ongelma, kirjautumissivu ei toimi
« Vastaus #5 : 11.02.11 - klo:08.12 »
Koodia: [Valitse]
<?php
$password 
mysql_real_escape_string(md5($_POST["password"]));

Ihan sellaisena offtopiccina mutta jos teet tuon noin päin että ensin pistät MD5:ksi POST-datan ja sitten vasta sen mysql_real_escape_stringin läpi ajat niin eikös siitä tule eri tulos kuin jos ajaisit md5( mysql_real_escape_string( $_POST['password'] ) ); jos käyttäjällä on jotain sellaisia merkkejä mitkä pitää escapettaa?

EDIT: Koetin tuota alkuperäistä koodiasi ja itselläni se ainakin skulaa ihan ongelmitta. Koeta echottaa montako riviä hakutuloksia tulee jotta näet tuleeko sieltä mitään alkuunkaan.
« Viimeksi muokattu: 11.02.11 - klo:08.26 kirjoittanut Stargazers »