Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: php salasanan tarkistus mysql kannasta

Sivun loppuun

bmore [19.01.2004 14:41:58]

#

mulla olis täälläinen koodi joka ilmoittaa että virhe kyselyssä:

<?php
//haetaan arvot muuttujiin
$tunnus= $_POST['tt_tunnus'];
$sala = $_POST['tt_salasana'];

//avataan yhteys
$yhteys = mysql_connect("localhost", "paivittaja", "paivita");
mysql_select_db("datacrew_huolto", $yhteys) or die("Tietokantaa ei löytynyt!");

//kysely onko tunnus ja salasana oikein
$kysely = mysql_query("SELECT * FROM tyontekija WHERE ty_tunnus = '$tunnus' AND salasana = PASSWORD('$sala'");
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

mysql_close($yhteys);

if ( mysql_num_rows( $haku ) ) header("Location: kirjauduttu.php" );

echo "Eipä matchannu.";

?>

Missä virhe?

Eli tietokannasta olisi tarkoitus katsoa onko käyttäjää olemassa eli saako mennä sisään hallintasivuille.

bmore [19.01.2004 14:44:40]

#

olisko yhdet sulut liian vähän?


Pitää testata uudestaan.

Toinen virhe minkä saan ulos on:
--------------------------------------------------------
Warning: Cannot add header information - headers already sent by (output started at c:\palvelin\bdc huolto\tarkista.php:11) in c:\palvelin\bdc huolto\tarkista.php on line 21
-----------------------------------------------------

Ei tuo headerien käyttö oo kovin tuttua, Voisko joku sen mulle selvittää näin maallikon sanoin?

Kiitti!

Draiz [19.01.2004 15:15:57]

#

No ennen headereita et voi tulostaa mitään. Ellet sitten halua käyttää ob_start ja ob_end_flush -funtioita
ks. https://www.php.net/ob_start

k-mikko [19.01.2004 17:03:59]

#

Vaihda tämä

lainaus:

<?php
//kysely onko tunnus ja salasana oikein
$kysely = mysql_query("SELECT * FROM tyontekija WHERE ty_tunnus = '$tunnus' AND salasana = PASSWORD('$sala'");
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");
?>

tällaiseksi

<?php
//kysely onko tunnus ja salasana oikein
$kysely = "SELECT * FROM tyontekija WHERE ty_tunnus = '$tunnus' AND salasana = PASSWORD('$sala')";
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");
?>

bmore [19.01.2004 18:40:44]

#

Nyt koodi on tälläinen
Ja antaa kaikille arvoksi

"väärä tunnus tai salasana!"

Koodi (tarkista.php):

<?php
//haetaan arvot muuttujiin
$tunnus= $_POST['tt_tunnus'];
$sala = $_POST['tt_salasana'];

//avataan yhteys
$yhteys = mysql_connect("localhost", "paivittaja", "paivita");
mysql_select_db("huolto", $yhteys) or die("Tietokantaa ei löytynyt!");

//kysely onko tunnus ja salasana oikein
$kysely = "SELECT * FROM tyontekija WHERE ty_tunnus = '$tunnus' AND salasana = MD5('$sala')";
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

mysql_close($yhteys);

if ( mysql_num_rows( $haku ) ) header("Location: sivu.php" );

echo "Tunnus tai salasana väärin!";

?>

Osaisko joku kertoa, että missä vika piilee...

Salasana koodataan MD5:lla tietojen syöttövaiheessa.

kenkku [19.01.2004 19:14:00]

#

vaihappas tuo rivi:

$sala = $_POST['tt_salasana'];

tuollaiseksi:

$sala = md5($_POST['tt_salasana']);

ja tuo:

$kysely = "SELECT * FROM tyontekija WHERE ty_tunnus = '$tunnus' AND salasana = MD5('$sala')";

tuollaiseksi:

$kysely = "SELECT * FROM tyontekija WHERE ty_tunnus = '$tunnus' AND salasana = '$sala'";

bmore [19.01.2004 19:22:05]

#

sama vastaus...

Osaisko joku koodata ton jotenkin toisin?

k-mikko [19.01.2004 19:27:18]

#

Tämä voisi toimia paremmin

<?php
//kysely onko tunnus ja salasana oikein
$kysely = "SELECT COUNT(*) FROM tyontekija WHERE ty_tunnus = '$tunnus' AND salasana = MD5('$sala')";
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

$mfa = mysql_fetch_array($haku);

If($mfa[0] > 0)
{
   header("Location: sivu.php");
}
else
{
  print "Salasana tai käyttäjätunnus väärin!";
}

mysql_close();
?>

bmore [19.01.2004 20:16:41]

#

lainaus:

<?php
//kysely onko tunnus ja salasana oikein
$kysely = "SELECT COUNT(*) FROM tyontekija WHERE ty_tunnus = '$tunnus' AND salasana = MD5('$sala')";
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

$mfa = mysql_fetch_array($haku);

If($mfa[0] > 0)
{
   header("Location: sivu.php");
}
else
{
  print "Salasana tai käyttäjätunnus väärin!";
}

mysql_close();
?>

Virhe kyselyssä???

Teme [19.01.2004 22:43:57]

#

Mitäs jos laittaisit jotain tän tapaista ennen tota kyselyä:

<?php
$yhteys = mysql_connect("palvelimen.osoite.com", "tunnus", "salasana");
mysql_select_db("valitaan_oikea_tietokanta", $yhteys);
...

Ja loppuun vielä:
mysql_close($yhteys);

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta