Náměty od čtenářů - I - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



PHP

Náměty od čtenářů - I

redakcni system

30. prosince 2002, 00.00 | Pokračování seriálu o tvorbě vlastního redakčního systému v PHP. Dnes načneme větší kapitolu, a to vzkazy od čtenářů, které nemohou chybět na žádném serveru. V prvním díle tohoto povídání i vytvoříme uživatelskou část systému.

Po odmlce se vracíme k seriálu o RS. V dnešním díle začneme povídání o námětech od čtenářů a ukážeme si, jak má vypadat enduser část. Admin část si probereme později.

Náměty od čtenářou jsou důležitou součástí snad každého redakčního systému. Pomáhají zlepšit jak vzhled, tak služby nabízené serverem k větší spokojenosti zákazníků, která je tím nejdůležitějším faktorem k zvýšení návštěvnosti, populatrity a nevím čeho ještě. U komerčních projektů to samozřejmě vede ke zvýšení zisku.....

Začneme databází. Ta má následující strukturu:

CREATE TABLE namety (
  id int(11) NOT NULL auto_increment,
  jmeno varchar(255) NOT NULL default '',
  email varchar(255) default NULL,
  text text NOT NULL,
  datum int(11) NOT NULL default '0',
  ip varchar(15) default NULL,
  zobrazit enum('a','n') default 'n',
  stav char(1) default 'n',
  reakce text NOT NULL,
  PRIMARY KEY  (id)
) 

Vysvětlíme si strukturu. ID je jednoznačný identifikátor, podle kterého budeme určovat zprávu pro smazání a úpravu. Jmeno je položka pro jméno odesílatele. Email nemusí být vyplněn. Pokud si čtenář nepřeje být kontaktován, nemusí ho vyplňovat. Text obsahuje samotný text příspěvku. Datum je doba, kdy byl námět vložen, počítana v sekundách od 1. ledna 1970. Do ip budeme ukládat IP adresu počítače, ze kterého nás přispěvovatel navštívil. Význam to má spíše statistický než praktický. Dalo by se samozřejmě jít ještě dál a dostat se až ke kraji, městu či dokonce škole, ze které si čtenář naše stránky prohlížel. To je ale na jiný článek. Položka zobrazit nám určí, jestli se má zobrazit čtenářům. Stavem určíme, je-li je námět přečtený, zodpovězený či netknutý od doby, kdy byl vložen. Na konec je položka reakce, do které se bude ukládat reakce na námět.

Asi se ptáte, kam vložit formulář pro náměty. Dát mu novou stránku nebo ho umístit někam do rohu? Já jsem zvolil druhou možnost a vložil jsem ho do scriptu levy.php. Tady je nová část spolu s koncem toho, co již máme:

<CENTER>Redakce přeje všechno nejlepší</CENTER><BR>
<H3 ALIGN="CENTER"><FONT COLOR="#3887FA">Náměty</FONT></H3>
<?
switch($vysledek):
	case "1":
		echo "<B><CENTER>Zpráva vložena</CENTER></B>";
	break;
	case "jmeno":
		echo "<B><CENTER>Jméno musíte zadat!!!</CENTER></B>";
	break;
	case "namet":
		echo "<B><CENTER>Námět musíte vyplnit!!!</CENTER></B>";
	break;
endswitch;
?>
<FORM METHOD="POST" ACTION="namet_zapis.php">
<TABLE BORDER=0>
<TR><TD><FONT COLOR="#870000">Jméno*:</FONT></TD></TR>
<TR><TD><INPUT TYPE="TEXT" NAME="jmeno" SIZE=24 VALUE="<?=$jmeno?>"></TD></TR>
<TR><TD><FONT COLOR="#870000">E-mail:</FONT></TD></TR>
<TR><TD><INPUT TYPE="TEXT" NAME="email" SIZE=24 VALUE="<?=$email?>"></TD></TR>
<TR><TD><FONT COLOR="#870000">Námět*:</FONT></TD></TR>
<TR><TD><TEXTAREA NAME="namet" COLS=20 ROWS=5><?=$namet?></TEXTAREA></TD></TR>
<TR><TD><INPUT TYPE="SUBMIT" VALUE="Odeslat"></TD></TR>
</TABLE>
* - nutno vyplnit
</FORM>

Přepínač proměnné $vysledek nám bude zajišťovat vypisování chybových hlášek nebo bezchybného provedení. Zbytek je myslím, jasný a tak rovnou přistoupím ke scriptu namet_zapis.php, který nám zadané údaje zpracuje:

<?
Header("Pragma: No-cache");
Header("Cache-Control: no-cache");
Header("Expires: ".GMDate("D, d M Y H:i:s")."GMT"); 
// spojíme se s databází
@include "./conn.php";
if($namet and $jmeno)
{
$datum=time();
@$vysledek=MySQL_Query("INSERT INTO namety VALUES ('',
     '".HTMLSpecialChars($jmeno)."','".HTMLSpecialChars($email)."',
     '".HTMLSpecialChars($namet)."','$datum','$REMOTE_ADDR','n','n','')");
$jmeno="";
$namet="";
$email="";
}
elseif($namet=="")
{
$vysledek="namet";
}
elseif($jmeno=="")
{
$vysledek="jmeno";
}
header("Location: index.php?vysledek=$vysledek&email=$email&jmeno=$jmeno
                          &namet=$namet");
?>

Na začátku zajistíme, že se stránka nebude cachovat a spojíme se s databází. Pokud uživatel zadal namet i jmeno, vložíme údaje do databáze. Jediné vysvětlení snad zaslouží proměnná $REMOTE_ADDR. Ta obsahuje IP adresu, ze které přišel požadavek. Pokud chybí námět či jméno, vrátí se v GET parametrech zprávy, které vypíší chybovou hlášku - viz. výše. Jelikož se mohou vyskytnou i tací návštěvníci, kteří se budou snažit nabourat náš systém, máme zde funkce HTMLSpecialChars(), které nám (pro nás) nebezpečné znaky nahradí přívětivějšími pro HTML formátování na stránce.

Tím máme hotovou enduser část pro zápis námětů. Příště si ukážeme jejich zpracování v admincentru a nakonec si ještě probereme zobrazování námětů a šéfredaktorových reakcí na náměty čtenářům.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: