Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 7.610 pregleda

Najnovija ↓

Smarty i losa praksa :) 09.03.2010. u 13:14 · pre 202 meseca #1
Elem, muka naterala da se pod stare dane bakcem i sa ovim. "Minor template modification" je preraslo u nesto malko vise.
Uzgred, upotreba Smarty-ja valjda podrazumeva i laksi rad dizajnerima, sto bas i nisam primetio na osnovu ovih sablona na kojima radim. :D

U cemu je problem?

Klijent je trazio da malo izmenim ovaj template:
http://bit.vc/

sto sam, nekako, i uradio, pa je onda zamolio i da zamenim default captchu nekom boljom, i to ovom:

http://code.google.com/p/3dcaptcha/

(Uzgred, ne bih rekao da je default captcha tako slaba, naposletku, taj skript se placa: http://www.gentlesource.com/short-url-script/)

E sad, taj 3d captcha skript kreira naravno $_SESSION varijablu zvanu: $_SESSION['3DCaptchaText'], ali ova nije dostupna u Smarty okruzenju. Testirao sam skripticu bez Smarty-ja i radi fino, samo da kazem.

Probao sam malo prljavog hardcodinga, kazu da to ne valja :D, ali nista:
Code:
              {php}

//echo $_SESSION['3DCaptchaText'];
if(isset($_POST['u'])) { // url text field, da pojasnim




if(empty($_POST['captchatext'])) { //captcha text field
echo 'Please enter the text you see in the image above';

}

if($_POST['captchatext']==$_SESSION['3DCaptchaText']){
//echo $_SESSION['3DCaptchaText'];
//echo $_POST['captchatext'];
echo 'ok';
}
else die('no');
}
{/php}       


ako imate neko brzo i lako resenje, bio bih zahvalan. :)
Re: Smarty i losa praksa :) 09.03.2010. u 13:22 · pre 202 meseca #2
samo jedno kratko pred kod, zasto $_SESSION['3DCaptchaText'] nije dostupna u smartiju, kreira se valjda pre outputa templejta?
{$smarty.session.3DCaptchaText} nema nista?
Potpis
http://norway.dakipro.com/
Re: Smarty i losa praksa :) 09.03.2010. u 13:47 · pre 202 meseca #3
@dakipro, dva templejta su u igri:
layout template, i form template.
Evo kako izgleda form template kod:
Code:
  <div id="s6l_content">
    {if $message}
    <div class="s6l_frontend_error_message">
      {foreach from=$message item=item}
        <div class="s6l_frontend_error_message_item">{$item}</div>
      {/foreach}
    </div>
    {/if}
    
     {if $show_form == 1}
    <form {$form.attributes}>
    {$form.hidden}        
    
    <dl class="s6l_short_url_form">

      <dt>{$form.u.label}</dt>
      <dd>{$form.u.html}<input type="image" src="./template/blue/image/go.gif" alt="" style="vertical-align:middle;" /><a style='margin-left:6px;color:#999;text-decoration:underline;font-size:13px;' href="?a=y">{$txt_advanced}</a>
        <!--<span id="s6l_advanced"><a href="?a=y">{$txt_advanced}</a></span>-->
        {if $form.u.error}<div class="s6l_error_message">{$form.u.error}</div>{/if}
        {if $message}
        <div class="s6l_frontend_error_message">
          {foreach from=$message item=item}
            <div class="s6l_frontend_error_message_item">{$item}</div>

          {/foreach}
        </div>
        {/if}
        
      </dd>
    
    {if $show_advanced_settings}
      <dt>{$form.u_id.label}</dt>
      <dd>{$form.u_id.html}
        {if $form.u_id.error}<div class="s6l_error_message">{$form.u_id.error}</div>{/if}
      </dd>
    {/if}
    
    </dl>    
      {call_module trigger="frontend_comment_form" data="$page_data"}
      
 
      

      <img src="template/blue2/3DCaptcha.php" alt="captcha" /> <!--ovde skript poziva textgen.php koji generise tekst za captcha image -->

     <p> Please enter Word you see on image:
      <input name="captchatext" type="text" /></p>
         


    </form>
              {php}
// moje drljanje
//echo $_SESSION['3DCaptchaText'];
if(isset($_POST['u'])) {




if(empty($_POST['captchatext'])) {
echo 'Please enter the text you see in the image above';

}

if($_POST['captchatext']==$_SESSION['3DCaptchaText']){
//echo $_SESSION['3DCaptchaText'];
//echo $_POST['captchatext'];
echo 'ok';
}
else die('no');
}
{/php}       
    
    {if $show_short_url}    
      <div class="s6l_label" style="margin-top:0em;margin-left:67px;">{$txt_short_url_text} {$output_message}</div>      

      <div id="s6l_result">
        <form name="newurlform">
        <input id="output_text" type="text" name="newurl" value="{$output_url}" {literal}onfocus="if (typeof(document.layers) == 'undefined' || typeof(textarea_selected) == 'undefined') {textarea_selected = 1; document.newurlform.elements['newurl'].select();}"{/literal} />
        <!--{if $twitter_link == 'Y'}  <a href="{$twitter_home_url}?status={$output_url}">Twitter it</a>{/if}-->

        </form>
      </div>
      <div id="s6l_statistics">
        {$length_statistics}<br /><br />
        {$txt_statistics_link}: <a href="{$output_url}{$statistics_trigger}">{$output_url}<strong>{$statistics_trigger}</strong></a>  
      </div>
    {/if}
    
  </div>

    

    {/if}


vidis, ovo nisam ni probao, nemam pojma o Smarty-ju. (Znam, znam, citaj help, i to:D))
Re: Smarty i losa praksa :) 16.03.2011. u 14:34 · pre 190 meseci #4
a zasto jednostavno ne odradis tu lokigu u php skripti koja poziva taj tpl
tako da umesto :

Code:

{php}

//echo $_SESSION['3DCaptchaText'];
if(isset($_POST['u'])) { // url text field, da pojasnim




if(empty($_POST['captchatext'])) { //captcha text field
echo 'Please enter the text you see in the image above';

}

if($_POST['captchatext']==$_SESSION['3DCaptchaText']){
//echo $_SESSION['3DCaptchaText'];
//echo $_POST['captchatext'];
echo 'ok';
}
else die('no');
}
{/php}


uradis

Code (php):


controller.php

$captchaIspravna = 0;
$postojiCaptcha = 0
$setovano = 0;

if(isset($_POST['u']))
    $setovano = 1;


if(!empty($_POST['captchatext'])){
    $postojiCaptcha = 1;

     if($_POST['captchatext']==$_SESSION['3DCaptchaText'])
           $captchaIspravna = 1;
}
$smarty->assign("setovano", $setovano);
$smarty->assign("captchaIspravna", $captchaIspravna);
$smarty->assign("postojiCaptcha", $postojiCaptcha);
 


i zatim u tpl-u samo stavis

Code:

{if $setovano==1}

    {if $postojiCaptcha==0}
          Please enter the text you see in the image above
    {/if}

    {if $captchaIspravna==1}
          ok
    {else}
          no
    {/if}
{/if}
Re: Smarty i losa praksa :) 17.03.2011. u 11:22 · pre 190 meseci #5
Ima mali bug:
Code (php):

 if($_POST['captchatext']==$_SESSION['3DCaptchaText']){
...
 

Sta ako ja posaljem post bez da sam otisao na stranicu gde se generise captcha?
Onda ce nista biti jednako nista i proci cu proveru.
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Smarty i losa praksa :) 17.03.2011. u 13:09 · pre 190 meseci #6
pa dobro, onda samo proveri da li postoji $_SESSION['3DCaptchaText'] i to je to.

Ja sam mislio da ima problem sa prikazom smarty-ja i da to nece da radi, pa sam se na to fokusirao a ne na proveru.
Re: Smarty i losa praksa :) 17.03.2011. u 13:26 · pre 190 meseci #7
p.s.
a i pogledaj malo bolje kod jer se

if($_POST['captchatext']==$_SESSION['3DCaptchaText'])

nece ni izvrsiti ako je $_POST['captchatext'] prazan
Re: Smarty i losa praksa :) 17.03.2011. u 14:07 · pre 190 meseci #8
Nisi skontao sta sam mislio. Fali mu jedan elseif kod poslednje if-a. Bug nije vezan za njegov problem vec captcha moze da se probije.
Objasnicu ti preko $_GET-a jer je lakse.

Imas stranicu register.php gde kada odes dobijes u sesiji npr. $_SESSION['3DCaptchaText'] = 'abcd';
I onda ti moras da ukucas u $_GET['captchatext'] = 'abcd';

Sta se desva ako je ne odem na cist register.php vec direktno odmah i prvi put ukucam register.php?action=save_registration&name=Pera???????
Onda nece nista biti u $_SESSION['3DCaptchaText'] nece bit ni $_GET['captchatext'] i to je jednako i proci ce.



Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Smarty i losa praksa :) 17.03.2011. u 14:22 · pre 190 meseci #9
izgleda da te opet nisam skontao :)

nije mi jasno kako ce proci to jednako ako ne prodje prvo proveru u

!empty($_POST['captchatext']) ?

aj je $_POST['captchatext'] prazna, onda se ni $_POST['captchatext']==$_SESSION['3DCaptchaText'] nece ispitivati.
Re: Smarty i losa praksa :) 17.03.2011. u 14:42 · pre 190 meseci #10
Pozivam se na njegov kod. Kroz tvoj nece proci. Moze da prodje ako se posle greske captcha ne isprazni...
A i izmedju ostalog te provere bi trebao da odredti u php-u a ne u tpl-u.
U tpl samo ispise greske.
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Smarty i losa praksa :) 17.03.2011. u 14:50 · pre 190 meseci #11
ja sam mislio da pricamo o mom kodu ....

Citat:
VladaSu:A i izmedju ostalog te provere bi trebao da odredti u php-u a ne u tpl-u.
U tpl samo ispise greske.


slazem se, nego ja sam samo hteo da napravim pandan njegovom kodu, cisto da proba da li hoce tako da radi ili ne, jer koliko sam skontao, on je imao problem sa smartijem i nije hteo da ispisuje sesiju
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme