#1 2011-09-12 16:06:07

4PS4QU4
Člen
Registrován: 2010-09-04
Příspěvky: 50

Re: Shoutbox

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

#2 2011-09-12 17:49:20

Lkopo
Podpora
Registrován: 2010-02-12
Příspěvky: 1,916
Web

Re: Shoutbox

Pekný návod, len bohužiaľ banovať IP adresy na webstránkach je zbytočná námaha. Poškodzovateľ sa dostane na web pomocou napr. proxy serveroch a píše nevhodné správy naďalej.


Portfólio
E-mail: eduard(at)karpiel.sk

Offline

#3 2011-09-12 18:20:07

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,296

Re: Shoutbox

Tak zablokuj užívateľov ktorý idú cez proxy wink

/*
 * 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

#4 2011-09-24 09:09:47

4PS4QU4
Člen
Registrován: 2010-09-04
Příspěvky: 50

Re: Shoutbox

JF : Ale co když někdo má od providera zapnutý port 80 ? Nemáte nějakou lepší ochranu na proxy a anonymizery?  wink

Offline

#5 2011-09-24 12:35:45

kyborek
Člen
Registrován: 2011-06-08
Příspěvky: 78
Web

Re: Shoutbox

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

#6 2011-09-24 13:44:27

Lkopo
Podpora
Registrován: 2010-02-12
Příspěvky: 1,916
Web

Re: Shoutbox

Taktiež aplikácia Hide My IP jednoducho mení IP adresy ...


Portfólio
E-mail: eduard(at)karpiel.sk

Offline

#7 2011-09-24 15:45:14

4PS4QU4
Člen
Registrován: 2010-09-04
Příspěvky: 50

Re: Shoutbox

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? hmm

PS :  V tom scriptu je

@fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30)

:?

Offline

#8 2011-09-24 17:14:32

Lkopo
Podpora
Registrován: 2010-02-12
Příspěvky: 1,916
Web

Re: Shoutbox

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

#9 2011-09-25 12:17:27

4PS4QU4
Člen
Registrován: 2010-09-04
Příspěvky: 50

Re: Shoutbox

To je hezké, ale já dělám vlastní aplikaci  a se shoutboxem to nemá nic společného ;-)

Offline

#10 2016-01-09 20:12:08

sik23
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 5

Re: Shoutbox

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

#11 2016-01-11 00:06:48

Lkopo
Podpora
Registrován: 2010-02-12
Příspěvky: 1,916
Web

Re: Shoutbox

Môžete tie súbory vložiť napr. do priečinku extensions/ (vytvoríte si, ak neexistuje) a tam pridáte tie súbory a potom cesta k nim bude <vaša_adresa>/extensions/vypis.php


Portfólio
E-mail: eduard(at)karpiel.sk

Offline

#12 2016-01-11 20:01:57

sik23
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 5

Re: Shoutbox

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

#13 2016-01-11 20:06:34

kksmirice
Endora rádce
Místo: Vrchovnice
Registrován: 2011-11-20
Příspěvky: 6,023
Web

Re: Shoutbox

sik23 napsal:

... 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

#14 2016-01-11 20:31:45

sik23
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 5

Re: Shoutbox

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

#15 2016-01-11 20:33:50

kksmirice
Endora rádce
Místo: Vrchovnice
Registrován: 2011-11-20
Příspěvky: 6,023
Web

Re: Shoutbox

sik23 napsal:

... 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

#16 2016-01-11 20:37:52

sik23
Endora uživatel
Registrován: 1970-01-01
Příspěvky: 5

Re: Shoutbox

kksmirice napsal:

Zkuste si pročíst tento článek, najdete tam možné řešení.

Vyřešeno. Díky moc

Offline

Zápatí

Založeno na FluxBB | CZ a SK