No nějak moc svižný v php nejsem, ale tady to zvládnu...
Upravené fce:
function NovyMail()
{
// bezpecnostni korekce
$GLOBALS["cisloclanku"]=phprs_sql_escape_string($GLOBALS["cisloclanku"]);
// zjisteni titulku
$dotazclanek=phprs_sql_query("select titulek from ".$GLOBALS["rspredpona"]."clanky where link='".$GLOBALS["cisloclanku"]."'",$GLOBALS["dbspojeni"]);
if ($dotazclanek!=0&&phprs_sql_num_rows($dotazclanek)>0):
$pole_clanek=phprs_sql_fetch_assoc($dotazclanek);
else:
$pole_clanek['titulek']='';
endif;
// test na existenci reg. ctenare
if ($GLOBALS["prmyctenar"]->ctenarstav==1):
$prodesilatel=$GLOBALS["prmyctenar"]->Ukaz("email");
$prctenar_test_robot=''; // bez testu
else:
$akt_pole_test_robot=NactiKontrolniRetezec();
$prodesilatel='@';
$prctenar_test_robot='<p style="text-align:center" class="kom-z">'.RS_KO_ZPR_KONTROLA.'<br /><br />'.$akt_pole_test_robot['captcha_otazka'].' <input type="text" name="captchaodpoved" size="12" class="textpole" /><input type="hidden" name="captchaid" value="'.$akt_pole_test_robot['captcha_id'].'" /></p>';
endif;
?>
<p align="center" class="nadpis"><? echo RS_CS_NADPIS; ?></p>
<p align="center" class="z"><strong><? echo RS_CS_CLANEK; ?>: <? echo $pole_clanek['titulek']; ?></strong></p>
<form action="rservice.php" method="post">
<input type="hidden" name="akce" value="sendinfo" />
<input type="hidden" name="cisloclanku" value="<? echo $GLOBALS["cisloclanku"]; ?>" />
<input type="hidden" name="prtitulek" value="<? echo $pole_clanek['titulek']; ?>" />
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr class="z"><td><? echo RS_CS_PRIJEMCE; ?>:</td><td><input type="text" size="40" name="prprijemce" value="@" class="textpole" /></td></tr>
<tr class="z"><td><? echo RS_CS_ODESILATEL; ?>:</td><td><input type="text" size="40" name="prodesilatel" value="@" class="textpole" /></td></tr>
<tr class="z"><td colspan="2" align="center"><br /><? echo RS_CS_TEXT_ZPR; ?><br /><textarea name="przprava" cols="50" rows="4" wrap="yes" class="textbox"></textarea></td></tr>
</table>
<? echo $prctenar_test_robot ?>
<p align="center"><input type="submit" value=" <? echo RS_CS_ODESLAT; ?> " class="tl" /></p>
<p align="center" class="z"><? echo RS_CS_INFO_TEXT; ?></p>
</form>
<p></p>
<?php
}
function OdeslaniMailu()
{
$chyba=0; // inic. testu na chyby
// test na chyby
if (CtenariTestNaAdresu($GLOBALS["prprijemce"])==0):
$chyba=1;
endif;
if (CtenariTestNaAdresu($GLOBALS["prodesilatel"])==0):
$chyba=1;
endif;
// text zobrazeny na strance
echo "<p align=\"center\" class=\"nadpis\">".RS_CS_NADPIS."</p>\n";
if ($chyba==1):
// chyba
echo RS_CS_ERR2;
else:
// test na existenci reg. ctenare
if ($GLOBALS['prmyctenar']->ctenarstav==1):
$nast_registrovany=1;
$nast_reg_prezdivka=$GLOBALS['prmyctenar']->Ukaz('username');
$nast_reg_id=$GLOBALS['prmyctenar']->Ukaz('id');
// vyhodnoceni captcha testu - u reg. ctenare je automaticky "true"
$vysl_captcha_test=1;
else:
// vyhodnoceni captcha testu - nutno provest test
if (isset($GLOBALS['captchaodpoved'])): $GLOBALS['captchaodpoved']=phprs_sql_escape_string($GLOBALS['captchaodpoved']); else: $GLOBALS['captchaodpoved']=''; endif;
if (isset($GLOBALS['captchaid'])): $GLOBALS['captchaid']=phprs_sql_escape_string($GLOBALS['captchaid']); else: $GLOBALS['captchaid']=''; endif;
// vyhodnoceni captcha testu - zalezi na nastaveni systemu
if (NactiConfigProm('captcha_komentare',0)==0):
$vysl_captcha_test=1; // captcha vypnuta
else:
$vysl_captcha_test=OverKontrolniRetezec($GLOBALS['captchaid'],$GLOBALS['captchaodpoved']); // captcha zapnuta - nutno provest vyhodnoceni
endif;
endif;
// test na vysledek kontrolni otazky (captcha kontrola)
if ($vysl_captcha_test==1):
// sestaveni tela zpravy
$obsah_zpravy=RS_CS_MAIL1.' '.$GLOBALS["prtitulek"]."\n";
$obsah_zpravy.=$GLOBALS["baseadr"].''.$GLOBALS["cisloclanku"]."\n\n";
$obsah_zpravy.=RS_CS_MAIL2."\n";
$obsah_zpravy.=$GLOBALS["przprava"];
// sestaveni predmetu zpravy
$predmet_zpravy=RS_CS_MAIL_PREDMET.' '.$GLOBALS["wwwname"];
include_once('admin/astdlib_mail.php'); // nacteni postovni tridy
$odeslani_posty = new CPosta();
$odeslani_posty->Nastav("predmet",$predmet_zpravy);
$odeslani_posty->Nastav("obsah",$obsah_zpravy);
$odeslani_posty->Nastav("adresat",$GLOBALS["prprijemce"]);
$odeslani_posty->Nastav("odesilatel_mail",$GLOBALS["prodesilatel"]);
$odeslani_posty->Nastav("odesilatel_txt",'');
if ($odeslani_posty->Odesilac()==1):
echo "<p align=\"center\" class=\"z\">".RS_CS_DOPIS_OK."</p>\n"; // vse OK
else:
echo "<p align=\"center\" class=\"z\">".RS_CS_ERR1."</p>\n"; // chyba
endif;
else:
// chyba - neuspesny kontrolni test (captcha kontrola)
echo "<p align=\"center\">".RS_KO_ERR6."</p>\n";
endif;
endif;
echo "<p align=\"center\" class=\"z\"><a href=\"".$GLOBALS["cisloclanku"]."\">".RS_CS_ZOBRAZ_CLA."</a></p>\n";
echo "<p></p>\n";
}
Nově přidané fce:
function NactiKontrolniRetezec()
{
$vysl['captcha_id']='';
$vysl['captcha_otazka']='';
// dotaz na vypis vsech dostupnych kontrolnich otazek
// tento zpusob ziskani kontrolni otazky nepocitani s prilis velkym mnoztvim otazek v databazi; v pripade vetsiho mnozstvi by se musel upravit dotazovaci mechanizmus
$dotaz="select * from ".$GLOBALS["rspredpona"]."captcha_test_otazky where zobrazit=1 order by idc";
$dotazpol=phprs_sql_query($dotaz,$GLOBALS["dbspojeni"]);
$pocetpol=phprs_sql_num_rows($dotazpol);
if ($pocetpol>0):
$akt_vybrana_otazka=rand(0,($pocetpol-1));
if (phprs_sql_data_seek($dotazpol,$akt_vybrana_otazka)):
// nacteni kontrolni otazky
$pole_data=phprs_sql_fetch_assoc($dotazpol);
// zaplneni vysledkoveho pole
$vysl['captcha_id']=$pole_data['identifikator'];
$vysl['captcha_otazka']=$pole_data['otazka'];
endif;
endif;
return $vysl;
}
function OverKontrolniRetezec($captcha_id = '', $captcha_odpoved = '')
{
// bezpecnostni korekce
$captcha_id=phprs_sql_escape_string($captcha_id);
$captcha_odpoved=phprs_sql_escape_string($captcha_odpoved);
// uprava odpovedi
$captcha_odpoved=strtolower(trim($captcha_odpoved));
// kontrolni dotaz
$dotaz="select idc from ".$GLOBALS["rspredpona"]."captcha_test_otazky where identifikator='".$captcha_id."' and odpoved='".$captcha_odpoved."' and zobrazit=1";
$dotazpol=phprs_sql_query($dotaz,$GLOBALS["dbspojeni"]);
if ($dotazpol!=0&&phprs_sql_num_rows($dotazpol)==1):
return 1; // OK; kontrolni retezec plati
else:
return 0; // chyba
endif;
}
[
http://www.rozsec.cz] - [
http://www.czechppm.cz]