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.
Toi session_start-funktio pitänee laittaa ihan ensimmäiseksi sivun alkuun. Eli ei tuohon ennen table-tagia, vaan ihan sinne koko sivun alkuun.
Ei toimi.
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ä?
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.
Jees nyt toimii kiitos paljon. :-)
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.
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.
Jos vika ei ole koodissa, niin missä sitten?
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.
Mistä virheilmoitukset saa näkyviin?
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.
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.
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
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ä.
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); } } ?>
Ja kun vielä kolmannen viestin kirjoittaa, tulee aiheet-kansioon tiedostot 2I2.txt ja I0.txt. I0.txt sisältää viestin, 2I2.txt ei.
Aihe on jo aika vanha, joten et voi enää vastata siihen.