.:[Kliknutím na reklamu na webe prispejete k chodu stránky!]:..:[Registrácia Vám pridá lepšie možnosti pobytu na webe!]:.

Internet - Ako na náhodne generovanú CAPTCHU v K:CMS

Ako na náhodne generovanú CAPTCHU v K:CMSV tomto článku vám ukážem ako si urobiť náhodne generovanú CAPTCHU na webe, ktorý beží na redakčnom systéme K:CMS. Návod bude dosť jednoduchý, iba skopírujete dva súbory na FTPčko a upravíte súbor index.php, nič viac, nič menej.
Takže na začiatok si stiahnite tento pack ktorý obsahuje font a súbor ktorý generuje CAPTCHU http://www.m4jco.net/captcha.zip

Následovne tento archív rozbalíme, a súbory z neho dáme na spomínane FTP. Potom si otvoríme v textovom editore súbor index.php a nájdete si tento kod:

echo "$lang_index_discussion_for_the_article ".stripslashes($article["title"]).":</p>\n\n";

A od tohoto kodu si označíme riadky až po tento kod:

echo "<input type=\"submit\" name=\"submit\" value=\"$lang_button_save\" /></div>

</form>\n\n";

Je to dosť nepresne napísane, ale uvidíte ďalej :-)

Celý tento kod označený už len jednoducho prepíšeme týmto:

echo "$lang_index_discussion_for_the_article ".stripslashes($article["title"]).":</p>\n\n";

if ($submit!="") {
//if ($nick!="" AND $text!="" AND $web=="") {
//spamfilter edit, snad :)
session_start();
if ( ($nick!="") AND ($text!="") AND ($web=="") and ( ($_POST['spam']) == ($_SESSION["cislo"]) ) ) {
if ($_COOKIE["posted_comment"]!=$text) {

// pokud je nekdo prihlasen, ulozime jeho id
if ($_COOKIE["user_id"]!="") { $registered_user=1; $nick=$_COOKIE["user_id"]; } else {
$nick=strip_tags($_POST["nick"]);
$nick=addslashes($nick);
$nick=str_replace("&", "&amp;", $nick);
$registered_user=0; }

$text=htmlspecialchars($_POST["text"], ENT_NOQUOTES);
$text=str_replace("\r\n", "<br />", $text);
$text=addslashes($text);

if ($use_emoticons==1) {
$text=str_replace("", "<img src=\"".rootURL()."components/images/emoticons/", $text);
$text=str_replace("
", ".gif\" alt=\"Emoticon\" />", $text);
}

$sql=db_query("INSERT INTO kcms_comments (article, added, author, text, confirmed, user, ip) values ('".$article["id"]."', '".time()."', '$nick', '$text', '0', '$registered_user', '".$_SERVER["REMOTE_ADDR"]."')");

echo "<div class=\"popup-success\">$lang_alert_success</div>";

}

} else {

echo "<div class=\"popup-error\">$lang_alert_empty_inputs</div>";

}

}

$i=0;
$print=db_query("SELECT id, article, added, author, text, user FROM kcms_comments WHERE article='".$article["id"]."' ORDER by added");
while (list($id, $article, $added, $author, $text, $user) = db_fetch_row($print)) {
$i++;
// komentar registrovaneho uzivatele
if ($user==1) {
$author=db_query("SELECT login FROM kcms_users WHERE id='$author'");
$author=db_fetch_array($author);
}

echo "<div class=\"comment-line\"><div class=\"cl-left\"><span>$i.</span> ";
if ($user==1) { echo "<a href=\"/profiles/".$author["login"]."/\">".$author["login"]."</a>"; } else { echo (stripslashes($author)); }

echo "</div><div class=\"cl-right\">".date("j.n.Y [H:i]", $added)."</div>\n\n<div class=\"cb2\"><!-- --></div>\n\n</div>\n\n<p class=\"comment-text\">".stripslashes($text)."</p>\n\n";
}

if ($i==0) { echo "<p><em>$lang_index_this_article_wasnt_commented_yet</em></p>\n\n"; }

echo "<p class=\"discussion\">$lang_index_add_comment:</p>\n\n";

if ($login_for_comments==1) {

echo "<p>$lang_index_you_must_be_logged_in</p>\n\n";

} else {

if ($url_type=="static") { $url="../../"; }
if ($url_type=="dynamic") { $url="./"; }

echo "<script src=\"$url"."components/emoticons.js\" type=\"text/javascript\"></script>

<form action=\"".articleURL($s, $a)."\" method=\"post\">

<div><strong>Nick:</strong><br /><input type=\"text\" name=\"nick\" value=\"";
if ($userinfo["login"]=="") { echo (stripslashes($_POST["nick"])); } else { echo ($userinfo["login"]); }
echo "\" style=\"width: 150px;\"";
if ($_POST["submit"]!="" AND $_POST["nick"]=="") { echo " class=\"input-error\""; }
echo " /><br />
<strong>$lang_form_text:</strong><br /><textarea name=\"text\" id=\"text\" cols=\"\" rows=\"\" style=\"height: 200px; width: 500px;\"";
if ($_POST["submit"]!="" AND $_POST["text"]=="") { echo " class=\"input-error\""; }
echo ">".stripslashes($_POST["text"])."</textarea><br />";

if ($use_emoticons==1)

$dir=opendir("./components/images/emoticons/");
while ($file=readdir($dir)){
$file=explode(".", $file);
if ($file[1]=="gif") {
echo "\n<img style=\"cursor: pointer;\" src=\"".rootURL()."components/images/emoticons/".$file[0].".gif\" alt=\"<".$file[0].".gif./]\" onclick=\"addEmoticon('$file[0]');\" /> ";
}
}

echo "
<input type=\"text\" name=\"web\" value=\"\" style=\"display: none;\" />
<br><hr><strong>Pre bezpečnosť opíšte znaky ktoré vidíte nižšie.</strong>
<br>
<img src= /image.php />
<br>
<input type=\"text\" name=\"spam\" /";
if ( ($submit!="" AND $_POST["spam"]=="") or ($_POST['spam'] != $_SESSION["cislo"]) ){ echo " class=\"input-error\""; }
echo ">
<input type=\"submit\" name=\"submit\" value=\"Odoslať komentár\";

/>
<br>* Na obrázku sa nachádzaju len malé písmena a čísla.
</div>

</form>\n\n";

Následne subor index.php uložíme a dáme na FTP. Malo by to fungovať, ale robil som tento návod dosť na rýchlo tak je možné že tam je niekde chyba a že to nemusí isť tak ako má. Pokial by boli problémy tak napíšte do komentárov.

Ešte dodám jednu vec, že pokial vykonáte túto zmenu, tak stratíte funkciu "registrovaný uživatel nemusí opisovať CAPTCHU" ale tento problém sa dá lahko napraviť, pokial by bol teda záujem tak by som dopísal aj návod na toto.

Pokial by niekto ešte furt nevedel tak tu má už upravený súbor index.php z verzie 1.43
http://www.m4jco.net/index.zip

Diskusia pre článok Ako na náhodne generovanú CAPTCHU v K:CMS:

24.08.2008 [17:01]

M4jco
Mne smajlíky išli, ale prestali mi isť ked som prešiel na novú verziu. Vtedy mi stačilo len updatnuť subory a databazu z nového systému a v administrácii povoliť smajlov. Môžeš mi veriť, že presne tento istý kod mám na webe aj ja a ako vidíš smajlíky mi fungujú Emoticon

2. sucho
24.08.2008 [14:33]

Neregistrovanýpo zmene nefungujú smajlíky ...ako to bolo aj tu na webe Emoticon

 1

Pridať komentár:

Nick:

Text:

Poznámka: Nadmerné používanie smajlíkov bude viesť k zmazaniu komentáru. Na vyjadrenie pocitu stačí použiť jednoho smajlika, popripade dvoch.

[.smile1.gif./] [.smile3.gif./] [.smile4.gif./] [.smile5.gif./] [.smile6.gif./] [.smile7.gif./] [.smile9.gif./] [.smile11.gif./] [.smile12.gif./] [.smile13.gif./] [.smile14.gif./]

Užívateľ:
Heslo:
Nemáte účet?

Prajete si, aby bol tento web viac socializovaný?

Jasné, rád si budme vypíňať svoj profil, komentovať uživateľov, úšastniť sa diskusií a vo fóre (227) Hmm, môžeš to spraviť, ale nejako to nebudem využívať (51) Skús to, možno to bude mať úspech, ale skôr nie (24) Nie, je to blbosť... (38) Zostaň pri pôvodnom webe, tj. psp download a ostatné... (72)

Celkom hlasov: 412








blink182 fansite


Almo web - web o počítačoch

© 2008 M4jco.net v3 | Autor si vyžaduje zákaz kopírovania týchto článkov | Vaša IP je 38.107.191.119
Powered by K:CMS v1.5 | BP Com - Computer Eshop | Vygenerované za 0.041 sekúnd | RSS články | RSS komentáre