Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Adressiskripta

kayttaja-1634 [19.09.2006 00:03:23]

#

Hej.

Olisi tarvetta pelkästään PHP:llä toteutetulle adressiskriptalle. Varmaankin tällainen löytyy jostain jo valmiina, mutta koska olen niin käsi tyyppi, en löytänyt sellaista. Omat PHP-taidot ovat jo hieman ruosteessa, eikä ihan tähän hätään jaksaisi ruveta omaa väsäämään.

Tietääkö joku, mistä löytyisi?

Lebe80 [19.09.2006 08:43:39]

#

Eiköhän putkastakin löydy vieraskirjatyylisiä/linkkilista skriptejä.

Sellaisella pääsee hyvin alkuun, kun muuttaa niitä hieman.

Tontttu [01.10.2006 15:10:31]

#

Tässä sulle hetkessä väännetty, tekstitiedostopohjanen. :)

//adressi.php
<H3>Adressi</H3>
<?php
include('laheta.php');
include('nimet.php');
?>
//laheta.php
<?php
if (!isset($_POST['nimi'])) {
?>

<form method="POST" action="laheta.php">
  <table border="0">
    <tr>
      <td>Nimi</td>
      <td><input type="text" name="nimi" size="20"></td>
    </tr>
    <tr>
      <td>Sähköposti</td>
      <td><input type="text" name="email" size="20"></td>
    </tr>
    <tr>
      <td>Nimeni saa julkaista</td>
      <td><input type="checkbox" name="saako" value="ON"></td>
    </tr>
  </table>
   <input type="submit" value="Lähetä" name="B1">
</form>

<?php
} else {
   $tiedosto = fopen("adressi.txt", "a");

   $nimi = $_POST['nimi'];
   $email = $_POST['email'];
   $saako = $_POST['saako'];

if (strlen($nimi) <2)
{
exit ("Et antanut nimeäsi.");
}
if (strlen($email) <5)
{
exit ("Et kirjoittanut sähköpostiosoitettasi.");
}
   $aika = time();
   $rivi = "$nimi|-|$email|-|$saako|-|$aika\n";
   fwrite($tiedosto, $rivi);
   fclose($tiedosto);
   header("Location: index.php");
}
?>
//nimet.php
<table border="0">
<tr>
<td width="33%"><b>Nimi</b></td>
<td width="33%"><b>Email</b></td>
<td width="34%"><b>Päiväys</b></td>
</tr>
<?php
$viestit = file("adressi.txt");
$viestit = array_reverse($viestit);
$viestimaara = count($viestit);

echo "<p>Yhteensä <b>$viestimaara</b> allekirjoitusta.</p>";

for ($i = 0; $i < $viestimaara; $i++) {
   $tiedot = explode("|-|", $viestit[$i], 4);

   $nimi = $tiedot[0];
   $email = $tiedot[1];
   $saako = $tiedot[2];
   $aika = $tiedot[3];

if ($saako == ON){
echo "  <tr>";
echo "    <td width=\"33%\">$nimi</td>";
echo "    <td width=\"33%\">$email</td>";
echo "    <td width=\"34%\">" . date("d.m.Y H:i", $aika) . "</td>";
echo "  </tr>";
}
else
echo "";
}
 ?>
 </table>

Ja lisäks tarttee adressi.txt tiedoston, joka on chmodattu 777. :)

Lebe80 [01.10.2006 15:29:01]

#

Tontttu:
Post datastasi pitäisi lisäksi siivota mahdolliset |-| merkit pois, ja tarkastaa onko email-kentän sisältö kelvollinen sähköpostiosoite.

Lisäksi itse en oikein tykkää include("foobar.php") tyylisestä sisällön lisäämisestä, vaan mielestäni paljon käytännöllisempi on lisätä sisältö vaikkapa funktion kautta.
esim.

// function htmlLahte esim. omassa tiedostossa (vaikka laheta.php)
function htmlLaheta(){
  $html = "";
  $html .= "<form ....>
  ...
  </form>";
  return $html;
}

...

//
// Sisältö lisätään funktiolla
//
echo htmlLaheta();
// tai esim. $html .=htmlLaheta();

Tällöin skriptejä ei voi esim. ajaa suoraan kirjoittamalla urlia suoraan osoitepalkkiin, tulosteen voi puskuroida, yms. yms.

El-Ejecutor [02.10.2006 09:11:21]

#

Kokemus ja terve järki kertoo että kannattaa lisätä floodimisen esto ja jonkinlaine ip-banni ennen adressin julkaisemista.
Ite jätin ne aikoinaan adressista pois ja jouduin poistelee
aamuyön tunteina aku ankat ja kekkoset ja koodaamaan suojaukset pikasesti.

Vastaus

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

Tietoa sivustosta