Jaa miksiköhän tämä ei toimi?
Kun yritän mennä 'poista viesti'- osioon, tämä 'loggautuu ulos' eli sivuna on sisäänkirjautumislomake. Eli miten saisin scriptin menemään poista viesti osioon sensijaan että kirjauduttaisiin ulos?
<?php session_start(); $salasana = $_POST[salasana]; $act = $_GET[act]; //määritetään istuntomuuttujat if ($salasana == 'salis') { $_SESSION["JNGB-tila"] = "Kirjautunut"; $tila = $_SESSION["JNGB-tila"]; } if ($tila == 'Kirjautunut') { if($act == 'poistaviesti') { //Tiedoston sisältö taulukkoon $file = file("data/viestit.txt"); //Tiedoston rivien lukumäärä $num = count($file); //Avataan tiedosto kirjoitusta varten $fopen = fopen("data/viestit.txt","w"); //Käydään tiedosto läpi rivi kerrallaan for($i=0;$i<$num;$i++) { //Pilkotaan rivi osiin käyttäen |:ää välimerkkinä $osat = explode("|",$file[$i]); //Jos tiedostossa oleva id vastaa poistettavaa id:tä, riviä EI kirjoiteta uudestaan tiedostoon if(trim($osat[4]) != $_GET['poistoid']) { //Kirjoitetaan rivi (jos kirjoitetaan) fwrite($fopen,$file[$i]); } } //Suljetaan tiedosto fclose($fopen); } elseif ($act == 'kirjaudu-ulos') { unset($_SESSION["JNGB-tila"]); } else { echo " <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <html> <head> <meta content='text/html; charset=ISO-8859-1' http-equiv='content-type'> <title>JNFB- hallintapaneeli</title> </head> <body style='color: rgb(0, 0, 0); background-color: rgb(51, 153, 153);' alink='#000099' link='#000099' vlink='#990099'> <div style='text-align: center;'> <div style='background-color: rgb(102, 204, 204);'> <h2>JNGB- hallintapaneeli</h2> Tervetuloa käyttämään JNGB- hallintapaneelia. Alhaalta voit valita mitä haluat tehdä.<br> <br> <ol> <li><a style='text-decoration: none;' href='?act=poistaviesti'>Poista viesti</a></li> <li>Tee tätä</li> <li><a style='text-decoration: none;' href='?act=kirjaudu-ulos'>Kirjaudu ulos</a></li> </ol> </div> </div> </body> </html> "; } } else { echo " <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <html> <head> <meta content='text/html; charset=ISO-8859-1' http-equiv='content-type'> <title>JNFB- hallintapaneeli</title> </head> <body style='color: rgb(0, 0, 0); background-color: rgb(51, 153, 153);' alink='#000099' link='#000099' vlink='#990099'> <div style='text-align: center;'> <div style='background-color: rgb(102, 204, 204);'> <h2>JNGB- hallintapaneeli - Kirjautuminen<br> </h2> Kirjaudu sisään JNGB- hallintapaneeliin täyttämällä salasanakentän ja painamalla 'kirjaudu sisään'- painiketta.<br> <br> <form method='post' action='admin.php'> <label>Salasana: <input name='salasana' type='password'></label><br> <input value='Kirjaudu sisään!' type='submit'></form> </div> </div> </body> </html> "; } ?>
Sitä koodia muuten saa sisentää ja tehdä helppo lukista. Vois löytyä virheetkin paremmin.
Teksti arvot laitetaan lisäksi hipsuihin myös taulukoissa.
Aika arpomista sulla tuossa, että mitenkähän sitä viittais taulukon arvoihin. Käytä mieluiten syntaksia:
$taulu['avain'] $_POST['salasana'] $_SESSION['JNGB-tila'] etc..
HTML:ää ei ole tarpeen tunkea PHP-tulkin läpi, sulje php tagi HTML:n ajaksi. Lisäksi === on muistaakseni aavistuksen verran nopeampi kuin ==, ja mielestäni selkeämpi debuggauksessa kun ei tarvitse arpoa, että milläkähän arvoilla sitä nyt taas päästiin if-lausekkeeseen sisälle.
Juu. Tuo ongelma on ratkaistu jo, mutta seuraava on jo täällä.
Eli osaan muokata tiedostossa "viestit.txt" olevaa riviä 5, jonka sisältö olisi tällainen:
nimi|email|viesti
Mutta se on jo vaikeempaa, että miten saisi muokattua pelkästään "viesti" osiota "viestit.txt":ssä. Eli pitäisi muuttaa se "viesti" vaikkapa "moi"ksi. Käytänkö jotain "päällekkäisiä" räjäytyksiä vai jotain muuta?
Aihe on jo aika vanha, joten et voi enää vastata siihen.