| Autor | Zpráva | ||
|---|---|---|---|
| Hava Profil * |
#1 · Zasláno: 25. 2. 2010, 10:45:40
Ahoj vím že už se to tady několikrát řešilo, ale bohužel mi to pořád nejde nějak do hlavy a nebo mi to snejně formulář nechraní.
Zkusil jsem tento script jako ochranu proti spma robotum: <span id="spamprotirobotum">Ochrana proti spamu. Napište prosím číslici čtyři: <input type="text" name="robot" value="" id="protirobotum"><input type="hidden" name="kontrolni" value="ok"></span>
<script>
/* tento skript vloží do příslušného políčka */
document.getElementById("protirobotum").value="4";
document.getElementById("spamprotirobotum").style.display = "none";
</script>dále pak kontroluji: <?php
$BudemeZobrazovat=true;
if (isSet($_POST["odeslano"]))
{
if (strlen($_POST["vzkaz"])==0 || strlen($_POST["vzkaz"])>700 || strlen($_POST["jmeno"])==0 || strlen($_POST["email"])==0 && ((!isset($_POST['robot'])) || ($_POST['robot']!='4')))
{
echo "Nevyplnili jste všechny údaje a nebo je vzkaz příliš velký!";
}
else
{
$BudemeZobrazovat=false;
?>
<?php include "odesli.php"?>
<?php
}
}
if ($BudemeZobrazovat):
?>Nevím zda je to šťastné řešení a nebo zda nepužít něco jiného? Pořád čtu o captche ale bohužel jsem nikde nenašel srozumitelný návod jak na ní. Všem moc děkuji. |
||
| Majkl578 Profil |
#2 · Zasláno: 25. 2. 2010, 10:48:15
Na captchu bych z vlastní zkušenosti doporučil reCaptchu, je to již hotový systém, který používáš přes API.
Zalíbila se mi jejich myšlenka - každý captcha "kód" nějak pomůže - využívá lidí k rozpoznávání znaků, které nekodáže OCR při digitalizaci novin přečíst. |
||
| Hava Profil * |
#3 · Zasláno: 25. 2. 2010, 12:57:20
Jo na tu jsem taky koukal ale popravdě jsem z jejich stránek moc nepochopil jak jí implementovat do mého formuláře:
<?php
$BudemeZobrazovat=true;
if (isSet($_POST["odeslano"]))
{
if (strlen($_POST["vzkaz"])==0 || strlen($_POST["vzkaz"])>700 || strlen($_POST["jmeno"])==0 || strlen($_POST["email"])==0 && ((!isset($_POST['robot'])) || ($_POST['robot']!='4')))
{
echo "Nevyplnili jste všechny údaje a nebo je vzkaz příliš velký!";
}
else
{
$BudemeZobrazovat=false;
?>
<?php include "odesli.php"?>
<?php
}
}
if ($BudemeZobrazovat):
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
<table class="tabulka_forum">
<tr>
<td class="text_jmeno">Jméno:</td>
<td><input size="35" name="jmeno" cols="35" value="<?php if (isSet($_POST['jmeno'])) echo $_POST['jmeno'];?>"></td>
</tr>
<tr>
<td class="text_jmeno">Email:</td>
<td><input size="35" name="email" cols="35" value="<?php if (isSet($_POST['email'])) echo $_POST['email'];?>"></td>
</tr>
<tr>
<td class="text_jmeno">Nadpis tématu:</td>
<td><input size="55" name="nadpis" cols="55" value="<?php if (isSet($_POST['nadpis'])) echo $_POST['nadpis'];?>"></td>
</tr>
<tr>
<td class="text_jmeno">Váš vzkaz:</td>
<td><textarea rows="6" name="vzkaz" cols="40"><?php if (isSet($_POST['vzkaz'])) echo $_POST['vzkaz'];?></textarea></td>
</tr>
<tr>
<td class="text_jmeno"> </td>
<td></td>
</tr>
</table>
<input type="hidden" name="odeslano" value="true">
<input type="Submit" name="odeslat" value=">> Uložit">
</form>Na svých stránkách uvádějí toto že stačí vložit mě se to bohužel nepovedlo, mužeš mi poradit jak to propojit s tím vrchním kódem? require_once('recaptchalib.php');
$publickey = "..."; // you got this from the signup page
echo recaptcha_get_html($publickey);
require_once('recaptchalib.php');
$privatekey = "...";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} |
||
| Majkl578 Profil |
#4 · Zasláno: 25. 2. 2010, 14:37:27
Zkus něco takového:
<?php
//recaptcha
require_once('recaptchalib.php');
//tyto klíče získany při registraci na recaptcha.net
$publicKey = '...';
$privateKey = '...';
$budemeZobrazovat=true;
if (isset($_POST["odeslano"])) {
$captchaResponse = recaptcha_check_answer(
$privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);
if (strlen($_POST["vzkaz"]) == 0 || strlen($_POST["vzkaz"]) > 700 || strlen($_POST["jmeno"]) == 0 || strlen($_POST["email"]) == 0) {
echo "Nevyplnili jste všechny údaje a nebo je vzkaz příliš velký!";
} elseif (!$captchaResponse->is_valid) {
echo "Captcha kód nebyl správně vyplněn";
} else {
$budemeZobrazovat = false;
include "odesli.php";
}
}
if ($budemeZobrazovat) {
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<table class="tabulka_forum">
<tr>
<td class="text_jmeno">Jméno:</td>
<td><input size="35" name="jmeno" cols="35" value="<?php if (isset($_POST['jmeno'])) echo $_POST['jmeno'];?>"></td>
</tr>
<tr>
<td class="text_jmeno">Email:</td>
<td><input size="35" name="email" cols="35" value="<?php if (isset($_POST['email'])) echo $_POST['email'];?>"></td>
</tr>
<tr>
<td class="text_jmeno">Nadpis tématu:</td>
<td><input size="55" name="nadpis" cols="55" value="<?php if (isset($_POST['nadpis'])) echo $_POST['nadpis'];?>"></td>
</tr>
<tr>
<td class="text_jmeno">Váš vzkaz:</td>
<td><textarea rows="6" name="vzkaz" cols="40"><?php if (isset($_POST['vzkaz'])) echo $_POST['vzkaz'];?></textarea></td>
</tr>
<tr>
<td class="text_jmeno"> </td>
<td></td>
</tr>
<tr>
<td class="text_jmeno">Captcha:</td>
<td><?php echo recaptcha_get_html($publicKey); ?></td>
</tr>
</table>
<input type="hidden" name="odeslano" value="true">
<input type="Submit" name="odeslat" value=">> Uložit">
</form>
<?php
}
?>Do těch dvou proměnných na začátku (*Key) musíš doplnit klíče, které dostaneš po bezplatné registraci na jejich webu. |
||
| Hava Profil * |
#5 · Zasláno: 25. 2. 2010, 16:17:32
Tak jsem po registraci vyplnil tyto dva kliče:
$publicKey = '...'; $privateKey = '...'; Ale stejně mi to hlasí: To use reCAPTCHA you must get an API key from http://recaptcha.net/api/getkey Stačí vyplnit pouze toto a nebo se ještě něco někde musí nastavit? treba tady?: recaptchalib.php |
||
| Hava Profil * |
#6 · Zasláno: 25. 2. 2010, 16:22:12
Už to mám bylo tam malé a velké k v privateKey...
Myslíš si že takováto ochrana je dostačující a nebo je lepší třeba udělat nutnou registraci do fóra a až jako přihlášený uživatel že budeš moct vkládat příspěvky? |
||
| Majkl578 Profil |
#7 · Zasláno: 25. 2. 2010, 19:21:48
Hava:
To si myslím záleží na povaze dané diskuze. Třeba tady na DJPW můžou přispívat jak registrovaní, tak neregistrovaní. A tento přístup se mi líbí. Nerad bych nutil uživatele registrovat se jen proto, aby mohl napsat jeden příspěvek (a pak už tam nikdy nezavítal). |
||
|
Časová prodleva: 16 let
|
|||
0