Nejste přihlášeni
Stránky 1
Vytvořte si vlastní shoutbox
Je čas naučit návštěvníky webu psát krátké zprávy. V tutoriále si uděláme shoutbox který zná snad každý, hlavním rozdílem je to že nemá na sobě reklamu ;-).
Tentokrát budeme vytvářet tutoriál věc, kterou určitě znáte od služeb Blueboard aj. - shoutbox. Shoutbox je malá (většinou max. velká kolem 450×200 pixelů) která slouží k zanechávání krátkých zpráv. Většinou ji využívají webmasteři se stránkami na webgenerátorech, umisťují ji pod menu. V našem případě budeme využívat jazyk PHP a databázi MySQL, takže pokud nemáte hosting (nebo Apache a MySQL v PC) zapomeňte na tenhle tutoriál.
Vymoženosti shoutboxu
Aneb co bude možné ? Náš shoutbox bude nabízet ban dané IP adrese uživateli, jenž třeba zanechává neslušné zprávy. To bude možné zobrazením IP v PhpMyAdminu a do scriptu přidáním jedné proměnné (s jakou se dozvíte ;-)) s adresou.. Dále se bude pro informaci navíc ukládat datum vložení příspěvku, takže zjistit kdy byl přidán bude snadné. Jako poslední jsem si nechal antispam, shoutbox dovolí pouze v určitých intervalech vkládat zprávy.
SQL
Nejprve musíme vytvořit nějakou tabulku v databázi, aby bylo s čím pracovat, je to lepší než ukládat data do souboru. Otevřete si PhpMyAdmin a položte dotaz:
create table shoutbox (
id int not null auto_increment primary key,
nick varchar(25) not null,
text varchar(500) not null,
datum varchar(25) not null,
ip varchar(20) not null
) engine = innodb character set utf8 collate utf8_czech_ci;
Připomínám důležitou věc, každý soubor musí mít formát kódování znaků na UTF-8, jinak nepůjdou české znaky. Pokud by jste kódování potřebovali nutně změnit třeba na windows-1250 (cp-1250), budete muset změnit jak formát, tak i meta tagy a kódování v MySQL.
Připojení k databázi
Vytvoříme si soubor db.php, do něj vložte kód:
<?php
$pripoj = mysql_connect("MUJSERVER","MUJLOGIN","MOJEHESLO") or die ("Špatné údaje !");
mysql_select_db("MOJEMYSQL", $pripoj) or die ("Špatný název MySQL !");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_results=utf8");
?>
Výpis a přidávání záznamů
Vytvoříme si soubor vypis.php, umístíme do něj funkci s výpisem záznamů:
<?php
require("db.php");
echo('<meta http-equiv="content-type" content="text/html; charset=utf-8">
<div style="font-weight:bold;font-family:font-family:Arial;font-size:13px;"
align="center"><a href="pridat.php">Nový vzkaz</a></div>
<p>');
function vypis(){
$vyber=mysql_query("select * from shoutbox order by id desc limit 100");
while ($vysledek=mysql_fetch_assoc($vyber))
{
$vysledek["nick"] = stripslashes($vysledek["nick"]);
$vysledek["text"] = stripslashes($vysledek["text"]);
echo('<div style="font-weight:bold;text-decoration:none;font-size:13px;color:black;
font-family:Verdana;">'.$vysledek["nick"].'</div>
<div style="font-weight:none;font-size:11px;color:black;font-family:Verdana;
margin-bottom:5px;">'.$vysledek["text"].'</div>');
}
}
vypis();
?>
Jako další budeme potřebovat script na přidání zprávy. Takže si vytvoříme pridat.php:
<?php
session_start();
ob_start();
require_once("db.php");
?>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<div align="center">
<div style="font-weight: bold; font-family: font-family: Arial; font-size: 13px;">
<a href="vypis.php">Zpět na vzkazy</a></div>
<p>
<?php
$bany = array("zabanovanaip1","zabanovanaip2","zabanovanaip3");
$alert = "";
$antispam = 25;
if (!$_SESSION["cas"]){
$_SESSION["cas"] = 0;
}
if (isset($_POST["pridat"])){
$_POST["nick"] = trim($_POST["nick"]);
$_POST["text"] = trim($_POST["text"]);
$sec = time()-$antispam;
if (in_array($_SERVER["REMOTE_ADDR"],$bany)){
$alert("Vaše IP adresa má ban !");
}
elseif (time()-$antispam<=$_SESSION["cas"]){
$alert = "Zprávy lze přidávat po ".$antispam." sekundách !";
}elseif (empty($_POST["nick"])){
$alert = "Vyplňte nick !";
}elseif (empty($_POST["text"])){
$alert = "Vyplňte text zprávy !";
}
else{
$_POST["nick"]=htmlspecialchars(mysql_real_escape_string($_POST["nick"]));
$_POST["text"]=htmlspecialchars(mysql_real_escape_string($_POST["text"]));
mysql_query("insert into shoutbox (nick,text,datum,ip)
values ('".$_POST["nick"]."','".$_POST["text"]."',
'".StrFTime("%d.%m.%Y", Time())."','".$_SERVER["REMOTE_ADDR"]."')");
$_SESSION["cas"] = time();
header("Location: vypis.php");
}
}
if (trim($alert)!=""){
echo('<script>
alert("'.$alert.'");
</script>');
}
?>
<form action="" method="post">
Nick: <input type="text" name="nick" value="
<?php stripslashes($_POST["nick"]); ?>" size="18">
<p>Vzkaz:<br>
<textarea style="width: 135px; height: 175px;" name="text">
<?php stripslashes($_POST["text"]); ?></textarea>
<br><input type="submit" name="pridat" value="Přidat">
</form>
</div>
<?php
ob_end_flush();
?>
Nyní máme z velké části hotovo, scripty by nám měly fungovat. Jako poslední a důležitou věcí je iframe. Poslouží k tomu aby se stránka se shoutboxem nemusela pořád načítat, následující kód vložíme tam kde chceme shoutbox mít:
<iframe style="border: solid black 1px; width: 155px; height: 355px;" src="vypis.php">
To je vše, je však potřeba přidat nějaké ty CSS styly, ale to nechám na vás.
Offline
Tak zablokuj užívateľov ktorý idú cez proxy
/*
* See if the user is using a proxy
*/
if ($_SERVER['HTTP_X_FORWARDED_FOR'] || $_SERVER['HTTP_X_FORWARDED'] || $_SERVER['HTTP_FORWARDED_FOR']
|| $_SERVER['HTTP_VIA'] || in_array($_SERVER['REMOTE_PORT'], array(8080,80,6588,8000,3128,553,554))
|| @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30)) {
// Using a proxy to submit, probably a spammer.
die("Proxy being Used!");
}
Offline
JF : Ale co když někdo má od providera zapnutý port 80 ? Nemáte nějakou lepší ochranu na proxy a anonymizery?
Offline
to že máš zapnutý port 80 neznamená že ho tvůj prohlížeč bude používat pro zobrazení stránky. Pokud bys měl od providera zapnutý port 80 znamená to že bys teoreticky mohl mít stránky u sebe a někdo by tě mohl kontaktovat na tom portu. Prohlížeč jako výchozí port používá dynamické porty. viz Seznam portů
Robotická online hra zdarma: Bamgame.net
Offline
No právě dělám takovou soutěž na mém webu a přemýšlím jak zabránit přístup přes proxy či anonymizer. Když jsem zkoušel tuto možnost, tak stejne pár lidem to psalo, že mají proxy. Přesněji ip 81.200.55.122 . Tu má jedna známá, říkala mi, že to má tak provider. Takže nevíte nějaký lepší způsob?
PS : V tom scriptu je
@fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30)
:?
Offline
Skusil by som si nájsť ešte na niekde na googli zoznam spam botov a proxy serveroch (IP adresy) a cez curl porovnať IPčku. Shoutbox od všeVjednom.cz je dobré zabezpečený, ale občas mi napíše -> Vaše správa byla označená jako spam a žiadne proxy, či anonymizery som nepoužíval.
Portfólio
E-mail: eduard(at)karpiel.sk
Offline
To je hezké, ale já dělám vlastní aplikaci a se shoutboxem to nemá nic společného ;-)
Offline
Potřeboval bych poradit, kam vložit ty soubory (vypis.php, pridat.php a db.php). Pouzivam hostnig endora, mam nainstalovany wordpress se sablounou raindrops. Moje vize je taková, že bych ten kod z ifram vložil do wigetu TEXT. Jenže když to udělám, napíše mi to do toho rámu - soubor nenalezen. Proto se ptám kam ty soubory umístit, aby se to zobrazilo. Zkoušel jsem to vložit jak do šablony tak kořenového adresáře, ale vše marné. Děkuji
Offline
To jsem samozřejmě udělal, že jsem tu cestu upravil, když jsem to dal do nějaké složky. Ale nezobrazuje se to. A nová složka v kořenovým adresáři vytvořit nelze, až ve složce web, kde je WP
<iframe style="border: solid black 1px; width: 170px; height: 300px;" src="http://sikovo-vlacky.4fan.cz/web/extensions/vypis.php"></iframe>
.
Stránky jsou SDH Trhové Sviny v levém panelu je co se mi tam zobrazuje - jmenuje se to FireBox.
Offline
... A nová složka v kořenovým adresáři vytvořit nelze, až ve složce web ...
Nikde jinde než ve složce web nemáte oprávnění vytvářet adresáře (složky).
Správná cesta k souboru je http://sikovo-vlacky.4fan.cz/extensions/vypis.php, tedy bez uvedení web/
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Správná cesta k souboru je http://sikovo-vlacky.4fan.cz/extensions/vypis.php, tedy bez uvedení web/
Super, díky moc, už to jede. Teď by mne jen zajímalo, proč se mi tam zobrazuje citát od Wericha? Jak to dám pryč, už mám jeden pod stránkama. Předem díky za pomoc.
Offline
... Jak to dám pryč, už mám jeden pod stránkama. ...
Zkuste si pročíst tento článek, najdete tam možné řešení.
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Zkuste si pročíst tento článek, najdete tam možné řešení.
Vyřešeno. Díky moc
Offline
Stránky 1