Súgó - Keresés - Tagok - Naptár
Teljes változat: Biztonság a vendégkönyvbe...
PC WORLD Segélyvonal > WEBSAROK > Webszerkesztés, programozás > PHP
ZsoltiD
Sziasztok!

Az elmúlt időben telepítettem egy vendégykönyvet az oldalunkra, és az a bajom vele, hogy már kb a 20. spam hozzászólást töröltem róla.
Ez azért sem olyan jó, mert főleg egy ilyen evangélikus oldalon nem nagyon mutat jól egy két viagrás reklám meg hasonlók biggrin.gif:D.

cím: http://pilisievangelikus.hu/guestbook.htm

Hogy orvosoljam a problémát?
(Azon kívül, hogy másik vendégköynvet rakjak fel e helyett...smile.gif)

Üdv.:
ZsoltiD
ZsoltiD
Találtam rá egy megoldást, de sehogy em sikerült beleillesztenem a php-ba a másikat.
(http://pilisievangelikus.hu/vendegkonyv/sign.php)
Ennek az lenne a szerepe, hogy mikor ír valaki akkor van egy ellenőrző kép amin számok vannak és azt kell leolvasni majd beírni.

a vendégkönyv jelenlegi kódja (sign.php):
KÓD
<?php
$phphg_real_path = "./";
include($phphg_real_path . 'common.php');

$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];

$sql = "SELECT * FROM ".$prefix."_banned WHERE ip='$ip'";
$result = $db->query($sql);

$num = $db->num($result);

if($num > 0) {
    include($phphg_real_path . 'includes/page_header.php');
    $display = "Kitiltottak a Rendszerből. Kérlek lépj kapcsolatba az Admin-nal!";
    $template->getFile(array(
               'error' => 'error.tpl')
    );
    $template->add_vars(array(
                           'L_ERROR' => $lang['error'],
               'DISPLAY' => $display)
    );
    $template->parse("error");
    include($phphg_real_path . 'includes/page_footer.php');
    exit();
} else {
    $sql = "SELECT * FROM ".$prefix."_smilies";
    $result = $db->query($sql);
    
    $smilie_dir = "images/smilies";
    
    $smilie = "";
    $smilie_img = 0;
    
    while($row = $db->fetch($result)) {
          $smilie_code = $row['code'];
          $smilie_url = $row['url'];
          $smilie_name = $row['name'];
          $smilie .= "<a href=\"#\" onClick=\"DoSmilie('" . $smilie_code . "');\"><img src=\"$smilie_dir/$smilie_url\" border=\"0\" title=\"$smilie_name\" alt=\"$smilie_name\"></a>&nbsp;";
          
          $smilie_img++;
          if($smilie_img == 4) {
         $smilie .= "<br>";
         $smilie_img = 0;
          }
        }
    
    include($phphg_real_path . 'includes/page_header.php');
    $template->getFile(array(
               'sign' => 'sign.tpl')
    );
    $template->add_vars(array(
                           'L_SMILE' => $lang['smilies'],
                           'L_INFO' => $lang['info'],
                           'L_EMAIL' => $lang['email'],
                           'L_NAME' => $lang['names'],
                           'L_WEBSITE' => $lang['website'],
                           'L_MESSAGE' => $lang['message'],
                           'L_LOCATION' => $lang['loc'],

               'SMILIES' => $smilie)
        );
        $template->parse("sign");
        include($phphg_real_path . 'includes/page_footer.php');
}
?>


és ezt szeretném valahogy belekreálni (example1.php), pls segítsetek.:
KÓD
<?
include_once("submitTroughImage.class.php");
$sti = new submitTroughImage();


//check post. Returns null when tot posted...
if($sti->checkPost() === true){
    echo "<h1>Thank you, they mached!</h1>";
}elseif($sti->checkPost() === false){
    echo "<h1>Wrong input! Try again!</h1>";
}


//use this font
$sti->setFont("fonts/DESTROY_.TTF");

//create image
$sti->createImage();

//parse form...
?>

<h2>example 1:</h2>
Real simple<br>
<hr>

<form action=example1.php method=post>
<img src="image.php" border=0><br>
code: <?=$sti->parseStringInput();?> (<a href="example1.php">Can't read code?</a>)<br>
<br><input type=submit>
</form>

<?
//parse errors when there are any...
echo $sti->error();
?>


Zsolti
h.arpad
Nem túl sokan értenek PHP-ban az objektum-orientált programozáshoz. Ez még viszonylag új. Ha nem próbálnál ágyúval verébre lőni, lehetne segíteni... roll.gif
Spányik Balázs
Miért ne használhatna objektum-orientált kódot? Nyilván nem ő írta, hiszen akkor nem okozna neki gondot a beillesztés sem. Egyébként szerintem még csak igazad sincs, a mostanában általam látott összes nagyobb volumenű PHP-fejlesztés használt objektumokat. Mint például ez a fórum, vagy az a motor, ami a PC World szoftverboltja alatt ketyeg, ami legalább 3 éves! "Viszonylag új"? Szóval, ne szóljuk már le, hogy kit mit hogyan használ. Ha tudunk segítsünk, ha nem tudunk, ne szóljunk hozzá, ok?
h.arpad
Kezdjük mondjuk ezzel:
KÓD
include($phphg_real_path . 'common.php');

meg ezzel:
KÓD
include_once("submitTroughImage.class.php");

Mit is tartalmaz akkor ez a két fájl, csak, hogy segíthessek.annoyed.gif
IDÉZET
összes nagyobb volumenű PHP-fejlesztés

Pl. egy egyszerű vendégkönyv...
OFF:
Mert aztán én szoktam csak úgy, tudatlanul hozzászólni... meg aztán nagyon jellemző is ez a hozzászólásaimra. annoyed.gif [...*]? mad.gif
[*Utólag moderáltam magam.]

Egyébként, ha még nem lenne nyilvánvaló, akkor - a segítő szándék teljes hiánya mellett - megjegyezném, hogy nekem azért nem tetszenek az előre megírt hasonló vendégkönyvek, blogmotorok, stb., mert már készen vannak a spammerek robotjai is, melyeket kifejezetten ezeknek szántak, mivel ezek a legelterjedtebbek. Tehát, nem véletlen az, hogy tízesével-százasával érkeznek a spam-ek.

Amiben viszont tudok segíteni: készítettem egy vendégkönyvhöz igen hasonló oldalt, amit kis átalakítással - ugyancsak a segítő szándék teljes hiánya mellett - szívesen át tudok írni és oda tudok adni. Ebben szerepel spam-védelem is.
Spányik Balázs
/OFF/
Nem vontam kétségbe sem a hozzáértésedet, sem a segítő szándékot. Azzal is tisztában vagyok, hogy tök ismeretlen osztálydefiníciókat nyilván nem fog kitalálni magadtól.

Ettől azonban még nem lesz igaz az, hogy nem túl sokan értenek az OOP-hoz, vagy hogy ez egy új dolog volna, és szerintem nem is kéne lebeszélni az embereket arról, hogy ezt használják. A jó válasz tehát nem az, hogy ne használj OOP-t, hanem az, hogy tekintve, hogy nem ismerjük a kód elején include-olt classokat és php állományokat, elég nehéz megmondani, miért nem működik. Ez az igazság, nem?
h.arpad
De. (Azzal viszont változatlanul nem értek egyet, hogy nem új dolog, az indoklás itt nagyon off lenne.)
Ez a tartalom egy lebutítottváltozata. A teljes változat képekkel kiegészült megtekintéséhez kérünk, kattints ide.