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.
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!
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
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ä!");
?>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.
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'";
sama vastaus...
Osaisko joku koodata ton jotenkin toisin?
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();
?>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ä???
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);Aihe on jo aika vanha, joten et voi enää vastata siihen.