Pereiti prie turinio

img src=failas.php kaip išgauti kintamąjį iš to failo?


Rekomenduojami pranešimai

Sveiki,

 

redaguoju vieną captcha kodą. Čia CSI.php (kuris sugeneruoja kodą) dalis:

 /* output captcha image to browser */
 header('Content-Type: image/jpeg');
 imagejpeg($image);
 imagedestroy($image);
 $_SESSION['security_code'] = $code; 

 

tam puslapį, kuriam naudoju captcha, noriu su JS patikrint, ar teisingai įvedė kodą. image atvaizduoju taip:

 

<img src='CSI.php?width=100&height=40&characters=5' border='0' />

ir automatiškai užsisetina sesija, bet kai rašau $_SESSION['security_code'] visada būna užsisteinęs praeitas kodas. tas, kuris buvo prieš perkraunant puslapį. kaip išspręst šitą problemą? kaip padaryt, kad įdėjus tą

<img src='CSI.php?width=100&height=40&characters=5' border='0' />

eitų išgaut $code kintamąjį iš to CSI.php?

Ačiū.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Siūlyčiau šiek tiek pakeisti struktūrą. Tarkim, puslapis, kurį verti (index.php ar kas tai bebūtų) sugeneruoja paveikslėlį, išsaugo jį kažkur į folderį ir vietoj to, kad darytum src="CSI.php" darai src="$paveikslelio_url". Viskas vyks viename faile, tad turėsi ir sesijos kintamąjį :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki,

 

redaguoju vieną captcha kodą. Čia CSI.php (kuris sugeneruoja kodą) dalis:

 /* output captcha image to browser */
 header('Content-Type: image/jpeg');
 imagejpeg($image);
 imagedestroy($image);
 $_SESSION['security_code'] = $code; 

 

tam puslapį, kuriam naudoju captcha, noriu su JS patikrint, ar teisingai įvedė kodą. image atvaizduoju taip:

 

<img src='CSI.php?width=100&height=40&characters=5' border='0' />

ir automatiškai užsisetina sesija, bet kai rašau $_SESSION['security_code'] visada būna užsisteinęs praeitas kodas. tas, kuris buvo prieš perkraunant puslapį. kaip išspręst šitą problemą? kaip padaryt, kad įdėjus tą

<img src='CSI.php?width=100&height=40&characters=5' border='0' />

eitų išgaut $code kintamąjį iš to CSI.php?

Ačiū.

 

Visų pirma tai siūlyčiau captcha tikrinti server-side, o ne su js, prieš visą kodą reiktų parašyti session_start();

žodžiū siūlyčiau rašyti taip:

 

 session_start();

//prevent from caching img
 header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
 header("Cache-Control: no-store, no-cache, must-revalidate");
 header("Cache-Control: post-check=0, pre-check=0", false);
 header("Pragma: no-cache");

 /* output captcha image to browser */
 header('Content-Type: image/jpeg');
 imagejpeg($image);
 imagedestroy($image);
 $_SESSION['security_code'] = $code; 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na nesugalvoju ,kas galetu tavo variante neveikt. Gal js tikrinima leidi pries uzkraunant img?

 

Ne, tame ir esmė, kad tikrinimas yra PO image. Pagal idėją, tai turėtų būt normalus kodas sesijoj, o ne buvęs prieš tai (vienu kartu atgal). Nes eilės tvarka gaunasi tokia:

1. img src (tuo pačiu sesijai priskiriama reiškmė)

2. kodo tikrinimas

 

...................
<tr><td><br />Apsaugos kodas: <span style='color:red;'>*</span></td><td><br /><img src='js/CSI.php?width=100&height=40&characters=5' border='0' /><br /><br /><input type='text' name='kodas' class='textbox'></td></tr>
</table>";


?>

 <script language="Javascript">

function IsEmpty(){
 if(document.forms['uzsakymas'].kodas.value !== "<?php echo "".$_SESSION['security_code'].""; ?>")
 {
   alert("empty");
   return false;
 }
   return true;
}
</script>

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Koks tikslas turėti captcha, kuri yra tikrinama su js? Čia tas pats kas be apsaugos būt. Plius, kam tos kabutės prieš ir po $_SESSION?

Ir ką bandai daryt, niekad neveiks, nes šita eilutė <?php echo "".$_SESSION['security_code'].""; ?> įvyks prieš tai kai naršyklė paprašys <img src='js/CSI.php?width=100&height=40&characters=5'/>.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Wat :huh: Kodel?

Nežinau dėl kurio klausimo klausi, tai atsakysiu dėl abiejų.

1. JS galima išjungti, modifikuoti naršyklėje. Botai išvis 99% atvejų JS neparsina.

2. PHP vykdosi kai į naršyklę siunčiamas puslapis (html'as). Paveiksliukai (o tame tarpe ir CSI.php) siunčiami jau po to, kai naršyklė gauna html'ą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip :) Silke ir Tom teisingai parašė.

 

Jei nori viską palikti taip, kaip yra dabar, tai captcha kodą turėtum sugeneruoti tame pačiame PHP faile, kuris sugeneruoja HTML puslapį su nuoroda į captcha paveiksliuką. O skripte, kuris sugeneruoja patį paveikslėlį, neturėtų likti kodo generavimo - tik pasiėmimas jau esančio sesijoje.

 

Bet, kaip čia jau ir buvo minėta, labai keistas tas tavo captcha gaunasi, kurio kodą galima bus pamatyt peržiūrėjus puslapio source :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...