Autor Zpráva
Vavroch
Profil *
Zdravim
Udelal jsem si formular,pro odeber novinek mailem s ukaldanim do mysql db.
Potreboval bych ale jeste doplnit jednoduche osetreni proti spamu.
Kde bude napsano Opiste cislici 8..a uzivatel napise do inputu 8.
Pokud bude Zadane cislo rovno hodnote cisla 8,pak probehne zbytek skriptu,pokud ne vypise se echo a prikaz die.

Zatim jsem to vymyslel takto,ale je tam neco spatne,jelikoz hned po spusteni skriptu,se vypise chybova hlaska(resp nenacte to pozadovanou hodnotu z inputu formulare)
Zde je ZK:

Díky za radu.

<?php
mysql_connect ( "mysql.ic.cz", "db", "" );

mysql_select_db("mail");

/*spojení s databází*/

$hodnota = $_GET['hodnota'];
if($hodnota == "8");
else echo "<small>Zadejte správně ověřovací kod</small>";



/*Osetreni proti spamu*/


$funclub = $_POST['funclub'];
/*příjem proměnné, která je odesílána z formuláře*/

if ($_GET['vlozit'] == 1) {

/*kontrola, zda chce form. někdo odelslat*/
if (empty($funclub)) {
/*jestli je pole prázdné, vypíše se varování*/
echo "<small>Musíte vyplnit e-mailovou adresu!</small>";
}
$dotaz = "SELECT * FROM seznam WHERE mail='$funclub'";
$vysledky = mysql_query ($dotaz) or die (mysql_error());

$cislo = mysql_num_rows($vysledky);

/*kontrola, jestli zadaná e-mailová adresa již v databázi není*/

if ( $cislo == 0 and !empty($funclub)) {
$dotaz = "INSERT INTO seznam (mail) VALUES ('$funclub')";
$vysledky = mysql_query ($dotaz) or die (mysql_error());

/*vloží se adresa do DB*/

echo "<small class='vyrazny'>E-mail je uložen.</small>.";
/*Vypíše hlášku, která se zobrazí po přidání mailu do DB*/

} elseif (!empty($funclub)) {
echo "<small class='vyrazny'>Tento e-mail už v seznamu je!</small>";

/*Vypíše hlášku při shodě e-mailů v databázi*/
}
}
?>
Casero
Profil
Vavroch
if($hodnota == "8");
else echo "<small>Zadejte správně ověřovací kod</small>";

Co to napsat takto:
if($hodnota != "8") 
echo "<small>Zadejte správně ověřovací kod</small>"; 

else {//zbytek kodu}
Vavroch
Profil *
Jenže to je velmi podobne tomu stavu predtím,když,se spustí skript,tak první co se vypise za hlasku je"Zadejte správně ověřovací kod".
Zkousel jsem i ruzne obmeny ale porad stejne,bylo by treba,aby kontrola probehla az po stisknutí tlacitka O.K.

Pro jistotu pridavam nahledk kodu:

<form action="?vlozit=1" method="post">
<fieldset>
<label for="fun-text">e-mail pro zasílání novinek:</label>

<p>
<input type="text" name="funclub" id="fun-text" />

</p>
<p>Opište prosím číslicí <strong>osm</strong>:</p>
<input type="text" name="hodnota" id="hodnota-text" />
<input type="submit" value="ok" />
</fieldset>
</form>

<?php
mysql_connect ( "mysql.ic.cz", "", "" );

mysql_select_db("ic");

/*spojení s databází*/

$hodnota = $_GET['hodnota'];
if($hodnota != "8")
echo "<small>Zadejte správně ověřovací kod</small>";

else {



/*Osetreni proti spamu*/


$funclub = $_POST['funclub'];
/*příjem proměnné, která je odesílána z formuláře*/

if ($_GET['vlozit'] == 1) {

/*kontrola, zda chce form. někdo odelslat*/
if (empty($funclub)) {
/*jestli je pole prázdné, vypíše se varování*/
echo "<small>Musíte vyplnit e-mailovou adresu!</small>";
}
$dotaz = "SELECT * FROM seznam WHERE mail='$funclub'";
$vysledky = mysql_query ($dotaz) or die (mysql_error());

$cislo = mysql_num_rows($vysledky);

/*kontrola, jestli zadaná e-mailová adresa již v databázi není*/

if ( $cislo == 0 and !empty($funclub)) {
$dotaz = "INSERT INTO seznam (mail) VALUES ('$funclub')";
$vysledky = mysql_query ($dotaz) or die (mysql_error());

/*vloží se adresa do DB*/

echo "<small class='vyrazny'>E-mail je uložen.</small>.";
/*Vypíše hlášku, která se zobrazí po přidání mailu do DB*/

} elseif (!empty($funclub)) {
echo "<small class='vyrazny'>Tento e-mail už v seznamu je!</small>";

/*Vypíše hlášku při shodě e-mailů v databázi*/
}
}
}
?>
Vavroch
Profil *
Vyřešeno...kdyby,někdo řešil podobnou situaci,tak zde je správné řešení..Chyba byla zpusobena tím,že cast skriptu,kde bylo overeni vstupnich poli,se nacitala hned po nacteni stranky a nebyla ovlivnena vyckavanim na stisknuti potvrzeni formulare,stacilo tedy presunout podminku pod
if ($_GET['vlozit'] == 1)
Zde je tedy vysledek:

<form action="?vlozit=1" method="post">
<fieldset>
<label for="fun-text">e-mail pro zasílání novinek:</label>

<p>
<input type="text" name="funclub" id="fun-text" />

</p>
<p>Opište prosím číslicí <strong>osm</strong>:</p>
<input type="text" name="hodnota" id="hodnota-text" />
<input type="submit" value="ok" />
</fieldset>
</form>

<?php
mysql_connect ( "mysql.ic.cz", "ic", "" );

mysql_select_db("ic");

/*spojení s databází*/



$hodnota = $_POST['hodnota'];
$funclub = $_POST['funclub'];
/*příjem proměnné, která je odesílána z formuláře*/

if ($_GET['vlozit'] == 1) {

/*kontrola, zda chce form. někdo odelslat*/
if (empty($funclub)) {
/*jestli je pole prázdné, vypíše se varování*/
echo "<small>Musíte vyplnit e-mailovou adresu!</small>";
}

if($hodnota != "8")
echo "<small>Zadejte správně ověřovací kod</small>";

/*Osetreni proti spamu*/

else {

$dotaz = "SELECT * FROM seznam WHERE mail='$funclub'";
$vysledky = mysql_query ($dotaz) or die (mysql_error());

$cislo = mysql_num_rows($vysledky);

/*kontrola, jestli zadaná e-mailová adresa již v databázi není*/

if ( $cislo == 0 and !empty($funclub)) {
$dotaz = "INSERT INTO seznam (mail) VALUES ('$funclub')";
$vysledky = mysql_query ($dotaz) or die (mysql_error());

/*vloží se adresa do DB*/

echo "<small class='vyrazny'>E-mail je uložen.</small>.";
/*Vypíše hlášku, která se zobrazí po přidání mailu do DB*/

} elseif (!empty($funclub)) {
echo "<small class='vyrazny'>Tento e-mail už v seznamu je!</small>";

/*Vypíše hlášku při shodě e-mailů v databázi*/
}
}
}
?>
smisek05
Profil
ja osobne pouzivam toto
<?php
$random = rand(0, 99999);
?>

ve formulari mam jedno pole do ktereho uzivatel opise vygenerovane cislo a jedno hidden pole do kteryho se me zapise hodnota $random a potom to jednoduse overim ==

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0