Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Ei-MySQL vieraskirja

pake10 [14.11.2009 17:43:44]

#

Yksinkertainen vieraskirja. Tee myös allaolevien filujen lisäksi tyhjä data.txt-tiedosto, ja chmodaa se kirjoittavaksi yms.

guestbook.php

<?php
session_start();
//muuta nämä oikeiksi
$admin_email = "pake1@operamail.com";
$admin_salasana = "salasana";





//Tulostetaan linkit
echo '
<a href="vieraskirja.php?a=read">Lue vieraskirjaa</a> - <a href="vieraskirja.php?a=write">Kirjoita vieraskirjaan</a> - <a href="vieraskirja.php?a=login">Adminpaneeli</a><br><br>
';

//Nyt alkaa itse skripti


//tehdään oma funktio viestien tulostukselle, jotta viestien näyttäminen olisi helpompaa
function ShowMessages()
{
$open = file("data.txt");
$count = count($open);
for ($i=0; $i<$count; $i++) {
$entry = explode("|", $open[$i]);

echo '<b><i>';
echo $entry[0];
echo '</i></b><br>';
echo '<a href="';
echo $entry[3];
echo '">www</a><br>';
echo $entry[1];
echo '<br><br>';
}
}

//jos käyttäjä on klikannut lue-linkkiä, niin näytetään viestit.
if($_GET["a"] == "read"){
ShowMessages();
}

//Jos arvoa ei ole määritelty, eli käyttäjä on tullut suoraan vieraskirjaan, niin näytetään viestit.
if($_GET["a"] == ""){
ShowMessages();
}

//jos käyttäjä haluaa kirjoittaa vieraskirjaan, niin näytetään formi.
if($_GET["a"] == "write"){
  echo '
  <form action="vieraskirja.php?a=write2" method="post">
  <p>Nimimerkki: <input type="text" name="nimimerkki"></p>
  <p>E-Mail:&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="email"></p>
  <p>WWW:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="www"></p>

  <p>Viesti:</p>
  <p><textarea name="viesti" style="width: 100%; height: 10em;"></textarea></p>
  <p><input type="submit" value="Kirjoita!"></p>
  ';
  }

//Jos käyttäjä on lähettänyt formin, niin käsitellään tiedot.
if($_GET["a"] == "write2"){
  $nimimerkki = $_POST["nimimerkki"];
  $email = $_POST["email"];
  $www = $_POST["www"];
  $yv = $_POST["yv"];
  $viesti = $_POST["viesti"];

  $nimimerkki = strip_tags($nimimerkki);
  $email = strip_tags($email);
  $www = strip_tags($www);
  $viesti = strip_tags($viesti);

  $nimimerkki = str_replace("<", "&lt;", $nimimerkki);
  $nimimerkki = str_replace(">", "&gt;", $nimimerkki);
  $email = str_replace("<", "&lt;", $email);
  $email = str_replace(">", "&gt;", $email);
  $www = str_replace("<", "&lt;", $www);
  $www = str_replace(">", "&gt;", $www);
  $viesti = str_replace("<", "&lt;", $viesti);
  $viesti = str_replace(">", "&gt;", $viesti);

  $avaa = fopen("data.txt", "a");
  $id = rand(0,99999);
  $rivi = "$nimimerkki|$viesti|$email|$www|$id\n";
  if(!fwrite($avaa, $rivi)){
  echo 'Tiedostoon ei voitu kirjoittaa!<br> Asiasta ilmoitettu ylläpidolle.';
  $otsikko = "Virhe tapahtunut!";
  $mail = "Sivuillasi on tapahtunut seuraava virhe:\n\n Tiedostoon ei voitu kirjoittaa.";
  $from = "From: $admin_email";
  mail($admin_mail, $otsikko, $mail, $from);
  } else {
  echo "Viestin kirjoitus onnistui!";
  }
  }


  //Jos käyttäjä haluaa adminpaneeliin.
  if($_GET["a"] == "login"){
  echo '
  <form action="vieraskirja.php?a=login2" method="post">
  <p>Salasana: <input type="password" name="salis"></p>
  <p><input type="submit" value="Kirjaudu!"></p>
  </form>
  ';
  }

  //jos käyttäjä on lähettänyt kirjautumisformin.
  if($_GET["a"] == "login2"){
  $salis = $_POST["salis"];

  if($salis == $admin_salasana){
  $_SESSION["check"] = logged;
  echo 'Olet kirjautunut sisään. Jatka painamalla <a href="vieraskirja.php?a=admin">tästä</a>.';
  } else {
  exit("Väärä salasana!");
  }
  }

  //Adminsivun määritys
  if($_GET["a"] == "admin"){
  if(isset($_SESSION["check"])){

echo '<h2>Muokaa viestejä</h2><br>';
echo '
<form action="edit.php" method="post">
<textarea name="muok" style="width: 400px; height: 10em;">
';
include('data.txt');
echo '
</textarea><br><input type="submit" value="Muokkaa"></form><br>
<br>
<a href="vieraskirja.php?a=logout">Kirjaudu ulos</a>
';
echo '</p>';
} else {
echo "Et ole kirjautunut sisään!";
}
}



//uloskirjautuminen
if($_GET["a"] == "logout"){
session_destroy();
echo "Olet kirjautunut ulos.";
}
?>

edit.php

<?php
session_start();
if(isset($_SESSION["check"])){
$muok = $_POST["muok"];
$kahva = fopen("data.txt", "a");
ftruncate($kahva,0);
fwrite($kahva, $muok);
fclose($kahva);
echo "Viesti muokattu.";
} else {
echo "Et ole kirjautunut sisään!";
}
?>

Vastaus

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

Tietoa sivustosta