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.