Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Session-häikkää

Mee [08.03.2007 15:17:12]

#

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&auml;ytt&auml;m&auml;&auml;n JNGB-
hallintapaneelia. Alhaalta voit valita mit&auml; haluat
tehd&auml;.<br>
<br>
<ol>
  <li><a style='text-decoration: none;' href='?act=poistaviesti'>Poista viesti</a></li>
  <li>Tee t&auml;t&auml;</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&auml;&auml;n JNGB- hallintapaneeliin
t&auml;ytt&auml;m&auml;ll&auml; salasanakent&auml;n
ja painamalla
'kirjaudu sis&auml;&auml;n'- painiketta.<br>
<br>
<form method='post' action='admin.php'>
  <label>Salasana:
  <input name='salasana'
 type='password'></label><br>
  <input value='Kirjaudu sis&auml;&auml;n!'
 type='submit'></form>
</div>
</div>
</body>
</html>
";
}
?>

Niko [08.03.2007 15:20:20]

#

Sitä koodia muuten saa sisentää ja tehdä helppo lukista. Vois löytyä virheetkin paremmin.

Teksti arvot laitetaan lisäksi hipsuihin myös taulukoissa.

tsuriga [08.03.2007 16:26:45]

#

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.

Mee [08.03.2007 16:47:24]

#

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?

Vastaus

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

Tietoa sivustosta