Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kirjautuminen

Sivun loppuun

Resiina [06.10.2007 16:25:44]

#

Koodaamani keskustelualueen etusivu näyttää vain tyhjää tällaisella "kirjautumisboxin" koodilla:

<table border="1">
	<caption><b>Kirjautuminen</b></caption>
	<tr>
		<td>
		<?php
		session_start();
		if (!isset($_SESSION["nick"]))
		{
			$unick = $_POST["nimi"];
			$upw = $_POST["passu"];
			$nick = "";
			$pw = "";

			foreach (glob("passz/*.txt") as $tunnus)
			{
				$tunnus = file($tunnus);
				$nick = $tunnus[0];
				$pw = $tunnus[1];
				if ($unick == $nick && $upw == $pw)
				{
					$_SESSION["nick"] = $nick;
					$_SESSION["pw"] = $pw;
					break;
				}
			}

			print "
			<form method=\"post\" action=\"$_SERVER['PHP_SELF']\">
			Nimimerkki: <input type=\"text\" name=\"nimi\"><br>
			Salasana: <input type=\"password\" name=\"passu\"><br>
			<input type=\"submit\" value=\"Kirjaudu\"></form>
			<a href=\"uusi.php\">Luo uusi tunnus</a>";
		}
		else
			print "<a href=\"ulos.php\">Kirjaudu ulos</a>";
		?>
		</td>
	</tr>
</table>

Jos koodin laittaa kommentiksi, niin sivu näkyy kyllä. Missä vika?

Tässä vielä linkki kyseiselle sivulle.

Olga [06.10.2007 18:14:43]

#

Toi session_start-funktio pitänee laittaa ihan ensimmäiseksi sivun alkuun. Eli ei tuohon ennen table-tagia, vaan ihan sinne koko sivun alkuun.

Resiina [06.10.2007 18:26:41]

#

Ei toimi.

pistemies [06.10.2007 18:34:28]

#

Auttaako, jos laitat tuon Content-Type lainausmerkkeihin:

http-equiv="Content-Type"

Ps. Minulla moittii tätä riviä:

<form method=\"post\" action=\"$_SERVER['PHP_SELF']\">

Tuo kuuluisi olla suunnilleen näin (ainakin minun koneella):

print "<form method=\"post\" action=\""; print $_SERVER['PHP_SELF']; print "\"> ";

Onko sinulla errorit päällä?

Resiina [06.10.2007 19:45:05]

#

Joo nyt alkoi toimimaan, kun vaihdoin tuon action-hässäkän, mutta kirjautuminen ei silti vielä toimi. Eli siis tuolla foorumia-kansiossa on kansio nimeltä passz, jossa on tekstitiedosto 0.txt, jonka sisältö on seuraava:

Resiina
kek

Eli tunnuksen nimi on Resiina ja salasana kek. Kun noilla tiedoilla yrittää kirjautua, niin ei onnistu. :/
Tässä linkki tuohon tunnustiedostoon.

Olga [06.10.2007 22:21:31]

#

No ainakin

$nick = trim($tunnus[0]);
$pw = trim($tunnus[1]);

tulee ensin mieleen.

Resiina [06.10.2007 22:27:09]

#

Jees nyt toimii kiitos paljon. :-)

Resiina [06.10.2007 23:22:54]

#

Nyt tulikin uusi ongelma: ei onnistu uuden aiheen tekeminen.
Tässä koodi:

<?php
if (isset($_SESSION["nick"]))
{
	print "<h2>Uusi aihe</h2>
	<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">
	Aiheen nimi: <input type=\"text\" name=\"aihe_nimi\" style=\"width: 400;\"><br>
	Viesti:<br>
	<textarea name=\"viesti\" style=\"width: 50%; height: 300px;\"></textarea>
	<br>
	<input type=\"submit\" value=\"Lähetä\">
	</form>";

	$animi = $_POST["aihe_nimi"];
	$viesti = $_POST["viesti"];
	$pvm = date("j.n.Y");
	$klo = date("G:i");

	if (isset($animi) && isset($viesti))
	{
		$aiheet = glob("aiheet/*", GLOB_ONLYDIR);
		mkdir("aiheet/" . count($aiheet), 0666);
		$filu = fopen("aiheet/" . count($aiheet) . "nimi.txt", "x");
		fwrite($filu, $animi . "\n" . $nick . "\n" . $klo . " " . $pvm);
		fclose($filu);
		$filu = fopen("aiheet/" . count($aiheet) . "0.txt", "x");
		fwrite($filu, $nick . "\n" . $klo . "\n" . $pvm . "\n" . $viesti);
		fclose($filu);
	}
}
?>

Kun uutta aihetta yrittää tehdä, niin se ei tee uutta kansiota aiheet-kansioon, eikä tiedostoa ensimmäiselle viestille. Eli tänne pitäisi tulla kansio nimeltään 2 ja sinne tiedostot 0.txt ja nimi.txt.

Resiina [07.10.2007 09:58:01]

#

Sain tuon nyt luomaan kansion chmodaamalla tuon aiheet-kansion, mutta tiedostoja sinne ei vielä tule.
Koodia hieman muokattu, pari /-merkkiä lisätty:

<?php
    if (isset($animi) && isset($viesti))
    {
        $aiheet = glob("aiheet/*", GLOB_ONLYDIR);
        mkdir("aiheet/" . count($aiheet), 0777);
        chmod("aiheet/" . count($aiheet), 0777);
        $filu = fopen("aiheet/" . count($aiheet) . "/nimi.txt", "x");
        fwrite($filu, $animi . "\n" . $nick . "\n" . $klo . " " . $pvm);
        fclose($filu);
        $filu = fopen("aiheet/" . count($aiheet) . "/0.txt", "x");
        fwrite($filu, $nick . "\n" . $klo . "\n" . $pvm . "\n" . $viesti);
        fclose($filu);
    }
?>

E: Ilman nuota /-merkkien lisäämistä se pystyy kirjoittamaan nuo tiedostot tuonne aiheet-kansioon, mutta ei pysty sinne juuri luotuun lisäämään niitä.
E2: Eihän tuolle kansiolle tule chmod numeroksi kuin 600 vaikka 777 pitäisi tulla...
E3: Koodiin lisätty kansion luomisen jälkeen chmodaus. Nyt kansion chmod-numero on 777, mutta silti sinne ei tule mitään.

Resiina [08.10.2007 17:12:55]

#

Jos vika ei ole koodissa, niin missä sitten?

pistemies [08.10.2007 19:20:05]

#

Yritä saada virhe-ilmoitukset tuohon näkyviin. Helpottaisi varmaan.
Yleensä tuon viimeisen syynä on se, että safe_mode on jotenkin päällä.
Se meinaa sitä, että kansion luominen onnistuu, mutta sen oikeuksia ei saa sellaisiksi, että kyseiseen kansioon voisi luoda tiedostoja.

Resiina [08.10.2007 19:48:44]

#

Mistä virheilmoitukset saa näkyviin?

Resiina [08.10.2007 20:56:41]

#

Resiina kirjoitti:

... Nyt kansion chmod-numero on 777, mutta silti sinne ei tule mitään.

Eli eihän sen kansion oikeuksissa pitäisi mitään vikaa olla.

pistemies [11.10.2007 13:19:15]

#

Resiina kirjoitti:

Resiina kirjoitti:

... Nyt kansion chmod-numero on 777, mutta silti sinne ei tule mitään.

Eli eihän sen kansion oikeuksissa pitäisi mitään vikaa olla.

Tuo asia kuuluu tuohon ongelmaan. Vika on juuri jossakin safe_mode asetuksissa.
Php.ini-tiedostossa voi asetella noita errori-hommia toimimaan:

error_reporting = On

Suunnilleen noin. Itse en käytä tällä hetkellä apachea, joten täytyy turvautua vanhaan muistiin...

Ps. Huomasin juuri, että sinullahan on nuo hommat mbnetin sivutilassa. Saat sanoa hyvästit tuolle prjoktillesi hakemiston luomisesta ja tiedostojen tallentamisesta sinne. Ellei mbnet ole radikaalisti muuttanut asetuksiaan, se ei tule onnistumaan. Mutta voit hoitaa nuo hommat kyllä ilman eri hakemistojakin.
"Hakemistona" voisi esim. palvella tiedosto-tietokanta-systeemi, josta haetaan tarvittavat hommat.

Resiina [11.10.2007 17:04:58]

#

Mistä tuon php.ini-tiedoston löytää?
Jos tuo nykyinen systeemi ei toimi, niin voisin vaikka kokeilla laittaa tuon kirjoittamaan kaikki viestit samaan aiheet-kansioon tyyliin: <aihe>I<viesti>.txt esim. 13I37.txt

pistemies [12.10.2007 15:21:12]

#

Resiina kirjoitti:

Mistä tuon php.ini-tiedoston löytää?
Jos tuo nykyinen systeemi ei toimi, niin voisin vaikka kokeilla laittaa tuon kirjoittamaan kaikki viestit samaan aiheet-kansioon tyyliin: <aihe>I<viesti>.txt esim. 13I37.txt

Koska sinulla ei ole oma palvelin, oikeuksia ei ole tuohon php.ini tiedostoon.

Kannattaa tutustua esim. mbnetin ohjeisiin:
http://www.mbnet.fi/mbinternet/ohjeet/php/

Jos virhe-ilmoitukset ei toimi, siitä kannattaa laittaa viestiä mbnetin php-juttupalstalle. Mbnetin ylläpito seurailee sitä.

Resiina [15.10.2007 23:17:13]

#

Nyt sain toimimaan tuon uuden aiheen tekemisen, mutta sinne ei voi kirjoittaa uusia viestejä.
Koodi tekee aiheet-kansioon tiedostot 2I1.txt ja I-1.txt. Mistä tuo I-1.txt tulee? 2I1.txt on muuten samanlainen kuin I-1.txt, mutta se ei sisällä viestiä lainkaan, vain nimimerkin, kellonajan ja päivämäärän.

http://koti.mbnet.fi/resiina/foorumia/aiheet/

<?php
if (isset($_SESSION["nick"]))
{
	print "<h2>Kirjoita viesti</h2>
	<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">
	Viesti:<br>
	<textarea name=\"viesti\" style=\"width: 50%; height: 300px;\"></textarea>
	<br>
	<input type=\"submit\" value=\"Lähetä\">
	</form>";

	if (strlen($viesti) > 0)
	{
		$tiedostot = glob("aiheet/". $aihe ."I*");

		$viesti = $_POST["viesti"];
		$pvm = date("j.n.Y");
		$klo = date("G:i");

		$v = count($tiedostot)-1;

		$filu = fopen("aiheet/" . $aihe . "I" . $v . ".txt", "x");
		fwrite($filu, $nick . "\n" . $klo . "\n" . $pvm . "\n" . $viesti);
		fclose($filu);
		chmod("aiheet/" . $aihe . "I" . $v . ".txt", 0777);
	}
}
?>

Resiina [18.10.2007 17:11:43]

#

Ja kun vielä kolmannen viestin kirjoittaa, tulee aiheet-kansioon tiedostot 2I2.txt ja I0.txt. I0.txt sisältää viestin, 2I2.txt ei.


Sivun alkuun

Vastaus

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

Tietoa sivustosta