Pokiaľ máte záujem o reklamu napíšte mi na mail alebo na icq. Tieto kontakty sú v sekci "O mne"

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:

1. sucho
24.08.2008 [14:33]

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

24.08.2008 [17:01]

M4jcoMne 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

 1

Pridať komentár:

Nick:

Text:

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

Čoho si prajete viacej?

Návodov (46) Recenzií (4) Custom tém (2) Noviniek (4) Články o internete atd. (10)

Celkom hlasov: 66

PSP mod


Shoutbox je vytvorený už na vyše 50%!
Už je konečne hotové prihlasovanie cez session a písanie článkov s ochranov voči škodlivým znakom
20 Október - Spúšťam si tento pofidérny mikroblog a začínam pracovať na mojom svojom :-)





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.103.63.60
Powered by K:CMS v1.5 Stepan Matl © 2008 | Vygenerované za 2.936 sekúnd | RSS články | RSS komentáre