Moi, oma järki ei nyt oikein juokse, joten miten tämä pitäisi tehdä:
1. On yksi array missä on nimi, sekä salasana:
$tunnukset = array('matti' => 'salasana', 'maija' => 'sanasala');
2. If pitäisi tarkistaa onko lähetettu ($_POST['nimi'], $_POST['salasana']) nimi arrayssa, ja jos on niin onko sen keynä lähetetty salasana. Miten tämä pitäisi tehdä?
PS. Tietoturvajuttuja en tähän lisännyt, tietystihhän ne kuuluu sitten tulevaan scriptiin. Kiitti jo avusta :)
mitä?
Siis eikös se salasana tule nimenomaan $_POST -taulukon salasana -nimisessä solussa.
Eli $_POST['salasana'] on se lähetetyn salasanan arvo.
Lebe80 kirjoitti:
mitä?
Siis eikös se salasana tule nimenomaan $_POST -taulukon salasana -nimisessä solussa.
Eli $_POST['salasana'] on se lähetetyn salasanan arvo.
Juu näin on, mutta tuossa arrayssä on kelpaavat tunnukset. Miten siis voin tarkistaa, ettei se ole esimerkiksi kahdessa arrayssa, salasanoissa ja tunnuksissa, koska silloin maija voi käyttää "salasana"-salasanaa, vaikka kelpaava onkin vain "sanasala". Ja tänään on ollut muutenkin jo huono päivä, joka saattaa näkyä viesteissäni.
Heh, noin yksinkertaistahan se olikin. Kiitos avusta :)
Valitettavasti tuossa heikkolaatuisessa kyhäelmässä on tietoturva-aukko.
Pitäisi tarkistaa, että tunnus löytyy (isset, !empty, array_key_exists), koska muuten myös virheellinen tunnus ja tyhjä salasana kelpaavat.
Turhan puolivillainen ratkaisu tuli annettua. Parannetaan siis annettua koodia tarpeellisilla tarkistuksilla.
<?php <?php $tunnukset = array('matti' => 'salasana', 'maija' => 'sanasala'); $nimi = NULL; $sala = NULL; if (isset($_POST['nimi']) && isset($_POST['salasana'])) { $nimi = trim($_POST['nimi']); $sala = trim($_POST['salasana']); if (array_key_exists($nimi, $tunnukset)) { if ($sala == $tunnukset[$nimi]) { echo "<p>Samat ovat </p>"; } else { echo "<p>Pääsi unehtumaan vai :)</p>"; } } else { echo "<p>Virheellinen tunnus</p>"; } }
Trimmaaminen ei kyllä myöskään ole järkevää, ei varsinkaan salasanan trimmaaminen. Mitään maagisia välilyöntejä syötteisiin ei tule, ja jos käyttäjä niitä syöttää, hän varmaan tekee sen tarkoituksella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.