Forum » Izdelava spletišč » [php] Knjiga gostov
[php] Knjiga gostov
urosz ::
Imam par vprašanj glede izdelave knjige gostov..
1) kako se da najbolje preprečit vnos zlo-namerne kode. se pravi morebitno html ali kakšno drugo kodo da se odstrani in šele potem vpiše v bazo
2) kako preprečit vpis "spam-botom". se pravi neko preverjanje, da obiskovalec vnese neko kodo
drugače pa nasplošno kak nasvet, kako se lotit kodiranja tako imenovane "knjige gostov". (da vidim če sem princip približno zadel.. verjetno sem, glede na to, da deluje)
pa še prosil bi či lahko design malo pokomentirate KLIK ZA SS
1) kako se da najbolje preprečit vnos zlo-namerne kode. se pravi morebitno html ali kakšno drugo kodo da se odstrani in šele potem vpiše v bazo
2) kako preprečit vpis "spam-botom". se pravi neko preverjanje, da obiskovalec vnese neko kodo
drugače pa nasplošno kak nasvet, kako se lotit kodiranja tako imenovane "knjige gostov". (da vidim če sem princip približno zadel.. verjetno sem, glede na to, da deluje)
pa še prosil bi či lahko design malo pokomentirate KLIK ZA SS
HardFu ::
Dodas captcha, ali re-captcha, to so tiste slikce, ki imajo tekst gor in ga moras prepisat okence pod ali nad njim. Kar se pa tice zlonamerne kode pa konvertiras vsebino tako da tage zamenjas z siframi, vsak programski jezik ima svojo funkcijo za to (php ima recimo htmlspecialchars), drugace pa lahko to resis tudi z javascriptom, ne rabis ga pisat sam ker te skripte verjetno najdes na netu... Priporocam pa itak oboje za povecano varnost (ker je moznost da nekdo nima javascripta), dodatno lahko napises tudi kaksno funkcijo, ki preverja vnesene podatke.
LP
LP
http://codeable.io
R33D3M33R ::
1) uporabi strip_tags() ali kak preg_replace()
2) Pozabi na vnašanje kode. Naredi eno vnosno polje in napiši, da naj obiskovalci polje pustijo prazno. Ker boti niso tako pametni, da bi v prvo pogruntali za kaj se gre, bodo izpolnili vsa polja. Nato samo pred vpisom zavržeš komentar, zapišeš njihov IP v eno datoteko/tabelo in jih tako za vedno blokiraš.
2) Pozabi na vnašanje kode. Naredi eno vnosno polje in napiši, da naj obiskovalci polje pustijo prazno. Ker boti niso tako pametni, da bi v prvo pogruntali za kaj se gre, bodo izpolnili vsa polja. Nato samo pred vpisom zavržeš komentar, zapišeš njihov IP v eno datoteko/tabelo in jih tako za vedno blokiraš.
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Ziga Dolhar ::
1. mysql_escape_string oz. ustrezna "escape" funkcija.
"htmlspecialchars" še zdaleč ne zadošča. O kakem javascriptu, prosim lepo, niti ne upaj razmišljat.
"htmlspecialchars" še zdaleč ne zadošča. O kakem javascriptu, prosim lepo, niti ne upaj razmišljat.
https://dolhar.si/
urosz ::
sem se odločil za mysql_escape_string in captcho .. vendar še moram naštudirat ti dve funkciji :D bom že.. ali lahko kdo čist na kratko opiše delovanje teh dveh?
pa še za design kakšno mnenje bi prosil
drugače pa hvala vsem itak
pa še za design kakšno mnenje bi prosil
drugače pa hvala vsem itak
bluefish ::
sicer je podoba in kritika Knjige gostov odvisna od preostanka strani (upam, da le ta obstaja ). Bi ti svetoval, da malo zmanjšaš sam naslov, ki ni nujno, da je čez cel header. Enako tudi za Vpiši se v knjigo in Prejšnji vpisi. Preostanek pa je kar všečen. Morda še datum preoblikuj v nam poznan format DD.MM.YYYY + ura.
urosz ::
preostanek strani ne obstaja.. zgolj učim se še :P :P in upam na to, da nekega dne bo priložnost da se lotim kakega projekta
bluefish ::
No, če pa to, potem se lahko same izdelave knjige gostov lotiš malo bolj minimalistično in se potrudiš, da je možna kar se le da enostavna prilagoditev ob morebitnem poznejšem vstavljanju na stran.
R33D3M33R ::
Če boš uporabljal captcho, uporabi tako, da jo bodo ljudje lahko prebrali ...
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
urosz ::
zdaj nameravam pač naredit to knjigo gostov kar se da "popolno".. se pravi uporaba baze, preprečevanje zlonamerne kode, captcha, raznorazni dodatki kot gumbek za mail tistega, ki je vpisal tudi mail, smeškoti.. aja pa še nekaj me zanima.. datume mi izpisuje avtomatsko take, saj imam tip podatkov v tabeli timestamps.. kako bi naredil da bi lahko sam oblikoval format.. moram shranjevat posebej date in posebej time? in pol v phpju izpisat?
Atos ::
Ne. Uporabi date() funkcijo. Prvi argument sprejme format, drugi pa unix timestamp. Se pravi, če želiš nekaj v stilu: "12.12.08 ob 12:33" uporabi takole: echo date("j.n.y \o\b G:i", nek_timestamp);
Glede escapanja pa bi bolj priporočal mysql_real_escape_string(). Je identična mysql_escape_string(), s tem, da tudi upošteva charset trenutne povezave in pa mysql_escape_string je deprecated!
Glede escapanja pa bi bolj priporočal mysql_real_escape_string(). Je identična mysql_escape_string(), s tem, da tudi upošteva charset trenutne povezave in pa mysql_escape_string je deprecated!
Baja ::
uzizek:
priporočam R33D3M33R-jev način proti spam-bottom. namesto teženja uporabnikom, da naj pustijo prazno polje, ga skrij, v label pa daj obvestilo o zahtevani praznosti. boti ga vseeno napolnijo, folk ne bo imel tezav, obvestilo pa si izpisal zaradi screen readerjev.
se to. nekje sem enkrat prebral, da je pametno uporabljati mysql_real_escape_string takole:
priporočam R33D3M33R-jev način proti spam-bottom. namesto teženja uporabnikom, da naj pustijo prazno polje, ga skrij, v label pa daj obvestilo o zahtevani praznosti. boti ga vseeno napolnijo, folk ne bo imel tezav, obvestilo pa si izpisal zaradi screen readerjev.
se to. nekje sem enkrat prebral, da je pametno uporabljati mysql_real_escape_string takole:
function mysqlEscape($string){ if( get_magic_quotes_gpc() == 1 ) { $string = stripslashes($string); } return mysql_real_escape_string($string); }
R33D3M33R ::
Skritje v bistvu ni pametno. Sem na lastni koži ugotovil, da poznajo nekateri spam boti hidden atribut in poleg tega upoštevajo še CSS!
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
urosz ::
ne razumem funkcije get_magic_quotes_gpc() :S kaj naredi?
get_magic_quotes_gpc — Gets the current configuration setting of magic quotes gpc
Ziga Dolhar ::
Pove, kakšna je trenutna [strežniška] nastavitev direktive magic_quotes_gpc.
PHP: Magic Quotes - Manual
Sicer pa - magic quotes je [za resno delo] bad, bad.
PHP: Magic Quotes - Manual
Sicer pa - magic quotes je [za resno delo] bad, bad.
https://dolhar.si/
Baja ::
ker če je magic_quotes vklopljen, avtomatsko dodaja narekovaje (avtomatsko eskejpa), ti pa potem to še enkrat eskejpas z mysql_real_escape_string kar v bistvu ni to kar hočeš.
urosz ::
čas sem popravil, zdaj pa se matram z escapanjem, ampak mam težave...
(mysqlEscape je funkcija, ki jo je napisal Baja, v spremenljivkah $ime, $besedilo, $email pa že prej shranjujem vrednosti $_POST['Ime'] itd..)
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\projekt1\Guestsbook\forma.php on line 39
resnično rabim pomoč za escapanje :(
(mysqlEscape je funkcija, ki jo je napisal Baja, v spremenljivkah $ime, $besedilo, $email pa že prej shranjujem vrednosti $_POST['Ime'] itd..)
function vpisi_v_bazo($ime, $besedilo, $email){ $ime=mysqlEscape("$ime"); $besedilo=mysqlEscape("$besedilo"); $email=mysqlEscape("$email"); $ip=$_SERVER['REMOTE_ADDR']; $cas=time(); $link=mysql_connect("localhost","root","geslo"); if (!$link){ die ("Ne morem se povezat z MySQL!"); } mysql_select_db("projekt1",$link) or die ("Ne morem izbrati baze!"); $vnos=mysql_query("INSERT INTO guestbook (Ime,Komentar,Email,Cas,IP) VALUES ('$ime','$besedilo','$email','$cas','$ip')"); if (!$vnos){ echo "Vnos ni uspel zaradi ".mysql_error(); } else { global $vpisan; $vpisan=true; } mysql_close($link); }
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\projekt1\Guestsbook\forma.php on line 39
resnično rabim pomoč za escapanje :(
Zgodovina sprememb…
- spremenil: urosz ()
Atos ::
Zakaj ne greš pogledat v dokumentacijo PHP, kaj mysql_real_escape_string() sploh počne? Tam ti je jasno napisano, da stvar deluje samo, če si povezan z bazo (ker pač mora vediti s kakim charsetom si povezan z bazo). Ti pa tukaj kličeš funkcijo še preden vzpostaviš povezavo z bazo. Premakni vrstico
$link=mysql_connect("localhost","root","geslo");
čisto na vrh te tvoje funkcije in stvar bi morala delovati.
$link=mysql_connect("localhost","root","geslo");
čisto na vrh te tvoje funkcije in stvar bi morala delovati.
urosz ::
urosz ::
escapanje pa še vedno ne deluje.. pomoč prosim prosim prosimmm :D
vpišem recimo html kodo in se nažalost ta vseeno vpiše v bazo in potem pri izpisu tudi upošteva
if( ... vsa polja izpolnjena vglavnem .. ){ vpisi_v_bazo($_POST['ime'],$_POST['besedilo'],$_POST['email']); } ... function mysqlEscape($string){ if( get_magic_quotes_gpc() == 1 ) { $string = stripslashes($string); } return mysql_real_escape_string($string); } function vpisi_v_bazo($ime, $besedilo, $email){ $link=mysql_connect("localhost","root","shisha123"); if (!$link){ die ("Ne morem se povezat z MySQL!"); } mysql_select_db("projekt1",$link) or die ("Ne morem izbrati baze!"); $ime=mysqlEscape("$ime"); $besedilo=mysqlEscape("$besedilo"); $email=mysqlEscape("$email"); $ip=$_SERVER['REMOTE_ADDR']; $cas=time(); if (!$link){ die ("Ne morem se povezat z MySQL!"); } $vnos=mysql_query("INSERT INTO guestbook (Ime,Komentar,Email,Cas,IP) VALUES ('$ime','$besedilo','$email','$cas','$ip')"); if (!$vnos){ echo "Vnos ni uspel zaradi ".mysql_error(); } else { global $vpisan; $vpisan=true; } mysql_close($link); }
vpišem recimo html kodo in se nažalost ta vseeno vpiše v bazo in potem pri izpisu tudi upošteva
Zgodovina sprememb…
- spremenil: urosz ()
R33D3M33R ::
Edit: sem nekaj spregledal
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Zgodovina sprememb…
- spremenil: R33D3M33R ()
R33D3M33R ::
Za odstranjevanje HTML uporabi: http://si2.php.net/strip-tags
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
urosz ::
sem dal to zdaj in deluje .. hvala torej
kaj pa
"zanima me kako naj naredim ocenenjevanje komentarjev.. tisto.. npr. +2, -5, 0"
pa še mogoče kakšen komentar o obliki knjigice?
kaj pa
"zanima me kako naj naredim ocenenjevanje komentarjev.. tisto.. npr. +2, -5, 0"
pa še mogoče kakšen komentar o obliki knjigice?
R33D3M33R ::
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:
Na spletu že od junija 2002 ;)
:(){ :|:& };:
matichy ::
Pozdravljeno!
Glede botov pa ne preveč komplicirat.
To se naredi povsem preprosto (po moji logiki) in samo z 1 if stavkom.
Primer
6+1 = |_________|
Koda (HTML):
Sedaj pa potrebujemo kodo, ki bo preverila rezultat 6+1.
Če bo v oknu pisalo število 7 bo uporabnika spustilo naprej.
Če ne ga ne bo!
Koda(PHP):
Upam da ti je kaj jasno. Če ti ni vprašaj spodaj!
Glede botov pa ne preveč komplicirat.
To se naredi povsem preprosto (po moji logiki) in samo z 1 if stavkom.
Primer
6+1 = |_________|
Koda (HTML):
<html> <form action="knjiga.php" method="POST"> 6+1=<input type="text" name="okno"><br> <!--Tole pa je gumbek--> <input type="submit" value="Poslji"> </form> </html>
Sedaj pa potrebujemo kodo, ki bo preverila rezultat 6+1.
Če bo v oknu pisalo število 7 bo uporabnika spustilo naprej.
Če ne ga ne bo!
Koda(PHP):
<? $okno = $_POST["okno"]; $pravilno = "7"; if ($okno == $pravilno){ //Koda, ki mu dovoli vpis v bazo. } else{ //Koda, ki mu ne dovoli vpis v bazo. } ?>
Upam da ti je kaj jasno. Če ti ni vprašaj spodaj!
Zgodovina sprememb…
- spremenil: matichy ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Branje slik jpg iz MySQL z PHPOddelek: Izdelava spletišč | 2421 (2039) | a-ptuj1 |
» | MySQL BETWEEN dates?Oddelek: Programiranje | 1400 (1314) | Housy |
» | Težave z vpisovanje v mysql bazo z phpOddelek: Izdelava spletišč | 1043 (919) | Atos |
» | [php, mysql] sortiranje izpisa iz bazeOddelek: Izdelava spletišč | 2695 (2214) | Binji |
» | [PHP] moj forum :DOddelek: Izdelava spletišč | 1533 (1372) | medobear |