Hudební hitparáda – hodnocený seznam v PHP a MySQL 2.

7. května 2002

V tomto dílu si ukážeme, jak bude administrátor přidávat skladby do hitparády, jak budou čtenáři moci zasílat vlastní tipy na e-mail administrátora a jak zakomponovat tuto aplikaci do webových stránek. Nakonec si budete moci celý zdroj aplikace stáhnout.

Předpokládejme, že prezentace na webu je realizována skriptem index.php, do kterého se ze složky scripts vkládají pomocí parametru pg různé skripty. Pro začátečníky uvádím příklad takového skriptu index.php (ten bude v kořeni prezentace):

<?PHP require("scripts/config.php") ?> // vložit důležitá nastavení a připojit k databázi
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>Hit Tip</title>
</head>
<body>
<?php
$filename="scripts/hittip.php";
if (isset($pg)) { // otestovat nastavení parametru pg, pokud je nastaven, otestovat, zda takový skript existuje
  if (File_Exists ("scripts/$pg.php"))
    $filename="scripts/$pg.php";     // pokud skript uvedený v parametru pg neexistuje vložit výchozí skript (zde hittip.php)
}
include ($filename);
?>
</body>
</html>

Pro přidávání skladeb do hitparády dáte administrátorovi do kořene k dispozici jednoduchý formulář addhittip.php:

<? require("scripts/config.php") ?>
<html>
<head>
<title>Přidej skladbu</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table cellpadding=6><tr><td>
<?PHP
if (!empty($author) && !empty($track) && ($passw1==$password)) { // otestovat, zda je zadáno vše a heslo je správné
$author=AddSlashes($author); // ošetřit nebezpečné znaky
$track=AddSlashes($track);
$sqlcommand = "INSERT INTO ".$dbappname."hittip (track, author, date) VALUES (‚$track‘, ‚$author‘, ‚".time()."‘)"; // připravit SQL
if (mysql_query($sqlcommand)) { // vykonat SQL
echo "<b>Skladba $track – $author byla vloľena.</b>";
}
else
echo "<b>Chyba při ukládání do databáze!</b>";
}
else {
echo "<b>Nezadáno…</b>"; // heslo není správně, nebo nebyly zadány všechny údaje
}?>
<p>
<form method="post">
<fieldset>
<legend> přidat Hit Tip <br></legend>
<table>
<tr><td>
<input type="hidden" name="pg" value="hittip">
&nbsp;interpret <input type="text" name="author" size="15">
&nbsp;&nbsp;&nbsp;skladba <input type="text" name="track" size="15">
&nbsp;&nbsp;&nbsp;heslo <input type="password" name="passw1" value="<?PHP echo $passw1 ?>" size="15">
&nbsp;&nbsp;<input type="submit" value="vložit">
</td></tr>
</table>
</fieldset>
</form>
</td></tr></table>
</body>
</html>

Jakmile je jednou zadáno správné heslo, skript se po vložení skladby přesměruje sám na sebe a heslo si pamatuje (heslo je předáváno metodou POST, takže se neobjeví v URL). Formulář je tak ihned připraven pro přidávání dalších a dalších skladeb.

Poslední částí budou skripty na odeslání tipu čtenáře na e-mail administrátora. Nejprve část s formulářem sendhittip.php:

<p><b><font size="4">Můj Hit Tip</font></b></p>
<table border="0" cellspacing="0" cellpadding="3">
<tr><td>
<?
if ($cmail=="") $cmail=$def_email;
?>
<fieldset>
<legend>&nbsp;přidat Můj Hit Tip&nbsp;<br></legend>
<form method="post" action="index.php?pg=senthittip">
<table border="0" cellspacing="4" cellpadding="2">
<tr>
<td align="right"><b>Skladba</b></td>
<td><b><input class="sform" type="text" name="track" size="40"></td>
</tr>
<tr>
<td align="right"><b>Interpret </b></td>
<td><input type="text" name="author" size="40"></td>
</tr>
<tr>
<td align="right"><b>Odesílatel </b></td>
<td><input type="text" name="name" size="40">
<input type="hidden" name="cmail" value="<? echo $cmail ?>">
</td>
</tr>
<tr>
<td align="right"><b>E-mail </b></td>
<td><b><input type="text" name="from" size="40"></td>
</tr>
<tr><td nowrap colspan="2" align="right"><input type="submit" value="Odeslat"></td>
</tr>
</table>
</form>
</fieldset>
</td></tr>
</table>

Druhá část senthittip.php se postará o odeslání zadaných dat:

<p><b><font size="4">Můj Hit Tip</font></b></p>
<table border="0" cellspacing="0" cellpadding="3">
<tr><td>
<fieldset>
<legend>&nbsp;odeslání zprávy&nbsp;<br></legend>
<p><b>
<?php
function CZMail($to, $subjc, $text, $froma) // funkce pro posílání e-mailu s korektní češtinou
{
$headers = "MIME-Version: 1.0\n".
"Content-Type: text/plain; charset=\"iso-8859-2\"\n".
"Content-Transfer-Encoding: none\n".
"From: $froma\n".
"X-Mailer: PHP\n".
"Reply-To: $froma\n";
return @Mail($to, $subjc, $text, $headers);
}
if (!empty($track) && !empty($author)) {
$ordsamp="Můj Hit Tip\n\nSkladba: $track\nInterpret: $author\n\nOdeslal:\n$name $from $REMOTE_ADDR\n";
if (empty($cmail))
$cmail=$def_email;
if (CZMail($cmail, "Můj Hit Tip", $ordsamp, $from))
echo "$name odeslal zprávu na $cmail<br><br>Děkujeme za zprávu.";
else
echo "Zprávu se nepodařilo odeslat, zkuste to prosím znovu později…&nbsp;&nbsp;";
}
else
echo "Nebyly zadány potřebné údaje, nic se neodešle…";
?>
<br><br>
</p>
</fieldset>
</td></tr>
</table>

Ve skriptu addhittip by se ještě slušelo zamezit vkládání HTML tagů (např. pomocí StripTags), ale pro jednoduchost a také proto, že administrátor si snad sám sobě nebude chtít škodit (a ostatní nemusejí vůbec znát URL toho skriptu), jsem to již do skriptu nepřidával. Celou aplikaci i s .sql souborem si můžete stáhnout.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *