Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Smarty i losa praksa :)

[es] :: PHP :: Smarty template engine :: Smarty i losa praksa :)

[ Pregleda: 6016 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kelja

Član broj: 70429
Poruke: 1416
*.dynamic.isp.telekom.rs.



+35 Profil

icon Smarty i losa praksa :)09.03.2010. u 12:14 - pre 171 meseci
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. :)
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Član broj: 31848
Poruke: 1792
91.148.81.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Smarty i losa praksa :)09.03.2010. u 12:22 - pre 171 meseci
samo jedno kratko pred kod, zasto $_SESSION['3DCaptchaText'] nije dostupna u smartiju, kreira se valjda pre outputa templejta?
{$smarty.session.3DCaptchaText} nema nista?
 
Odgovor na temu

kelja

Član broj: 70429
Poruke: 1416
*.dynamic.isp.telekom.rs.



+35 Profil

icon Re: Smarty i losa praksa :)09.03.2010. u 12:47 - pre 171 meseci
@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))
 
Odgovor na temu

krksi
PHP Developer
Beograd

Član broj: 281484
Poruke: 22
95.180.40.*



Profil

icon Re: Smarty i losa praksa :)16.03.2011. u 13:34 - pre 158 meseci
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}
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Smarty i losa praksa :)17.03.2011. u 10:22 - pre 158 meseci
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.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

krksi
PHP Developer
Beograd

Član broj: 281484
Poruke: 22
95.180.40.*



Profil

icon Re: Smarty i losa praksa :)17.03.2011. u 12:09 - pre 158 meseci
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.
 
Odgovor na temu

krksi
PHP Developer
Beograd

Član broj: 281484
Poruke: 22
95.180.40.*



Profil

icon Re: Smarty i losa praksa :)17.03.2011. u 12:26 - pre 158 meseci
p.s.
a i pogledaj malo bolje kod jer se

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

nece ni izvrsiti ako je $_POST['captchatext'] prazan
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Smarty i losa praksa :)17.03.2011. u 13:07 - pre 158 meseci
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.




[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

krksi
PHP Developer
Beograd

Član broj: 281484
Poruke: 22
95.180.40.*



Profil

icon Re: Smarty i losa praksa :)17.03.2011. u 13:22 - pre 158 meseci
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.
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Smarty i losa praksa :)17.03.2011. u 13:42 - pre 158 meseci
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.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

krksi
PHP Developer
Beograd

Član broj: 281484
Poruke: 22
95.180.40.*



Profil

icon Re: Smarty i losa praksa :)17.03.2011. u 13:50 - pre 158 meseci
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
 
Odgovor na temu

[es] :: PHP :: Smarty template engine :: Smarty i losa praksa :)

[ Pregleda: 6016 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.