Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Array key

Sivun loppuun

joah [21.08.2013 15:40:00]

#

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 :)

Lebe80 [21.08.2013 15:43:53]

#

mitä?

Siis eikös se salasana tule nimenomaan $_POST -taulukon salasana -nimisessä solussa.

Eli $_POST['salasana'] on se lähetetyn salasanan arvo.

joah [21.08.2013 15:52:53]

#

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.

Teuro [21.08.2013 15:55:45]

#

<?php

if ($_POST['salasana'] == $tunnukset[$_POST['nimi']]) {
    echo "<p>Samat ovat </p>";
} else {
    echo "<p>Pääsi unehtumaan vai :)</p>";
}

joah [21.08.2013 15:58:26]

#

Heh, noin yksinkertaistahan se olikin. Kiitos avusta :)

The Alchemist [21.08.2013 17:39:58]

#

Valitettavasti tuossa heikkolaatuisessa kyhäelmässä on tietoturva-aukko.

Metabolix [21.08.2013 21:08:01]

#

Pitäisi tarkistaa, että tunnus löytyy (isset, !empty, array_key_exists), koska muuten myös virheellinen tunnus ja tyhjä salasana kelpaavat.

Teuro [21.08.2013 21:33:04]

#

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>";
	}
}

Metabolix [21.08.2013 21:50:00]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta