Autor Zpráva
prasopsisko
Profil *
Zdravím, potřeboval bych malou pomoc....

Umisťuji na nějaký web captchu (obrýzek pro kontrolu, proti spamu)... ale mám to udělané takhle: do formuláře vygeneruji kód a následně potom ten obrázek, kontrolu vstupních dat a kódu provádím javascriptem přes událost onsubmit, ale nevím jak do toho scriptu dostat hodnotu toho kódu, která je na té stránce uložena v proměnné $kod... zkoušel jsem vac neco = "<?php echo $kod;?>" což fungovalo, ale po menších úpravách to fungovat přestalo, uloží se mi tam místo hodnoty $kod celý ten string "<?php echo $kod;?>"... prostě nechápu jaktože mi to fungovalo a když jsem změnil jen nějaké drobnosti tak to přestalo...

Nebo nevíte o nějakém efektivnějším způsobu jak do javascriptu dostat proměnnou php... pokud možno tak, aby se ten kod nezobrazil nikde ve zdrojovém kódu

Děkuji za odpovědi
prasopsisko
Profil *
samozřejmě vac neco je vaR neco....
Leo
Profil
Pokud vam do hry vstupuje tak jako tak JavaScript, tak se na captchu vykaslete, jednoduche reseni je pouzite treba na techto strankach v komentarich. Leo
prasopsisko
Profil *
Leo:
asi nevím o jakých komentářích mluvíte, tak to prosím rozveďte...
ale já tu captchu tam dát musím, o tom jestli tam bude nebo ne nerozhoduji :) spíš mě štve že už to dneska jednou fungovalo a přestalo, tak by mě stejně zajímalo jak dostat tu proměnnou co mam na stránce v podobě $var do scriptu na udalosti onsubmit... nějak to přece jít musí ne? resp. to jde ale asi jsem něco udělal špatně či co, a když jsou ty jazyky tak blbý a nerozuměj si navzájem tak s tim nic nesvedu bez potřebných znalostí :o)...
Leo
Profil
"asi nevím o jakých komentářích mluvíte"

Pardon - prispevcich, no proste to, co ted pisu :-) Leo
Leo
Profil
"uloží se mi tam místo hodnoty $kod celý ten string "<?php echo $kod;?>""

No v tom pripade to bud nemate ulozene jako php skript, nebo mate nejaky zmatek s uvozovkami... Leo
peta
Profil *
prasopsisko
Viz Leo, zakladni pravidlo je, ze pridas odkaz na zdrojovy kod, pripadne funkcni ukazku. Jinak papa, to je pak jak carovat ze vzduchu a to se pak neustale clovek pta, co tam mas a nemas a ztraci se cas..

Do JS dostavam PHP timto zpusobem:
var xxx = <?=$aaa?>;
var xxx = "<?=$aaa?>";
var xxx = <? echo $aaa;?>;
var xxx = "<? echo $aaa;?>";
var xxx = "<?=addslashes($aaa)?>";

U JS je dulezite, co vidis v source-code na HTML strance, cili, jestli tam je:
var xxx = "ahoj \"peto\"";
A co hlasi JS konzola za chybu:
FF - nastroje - JS konzola
O - nastroje - JS konzola
IE - zluty vykricnik dole vlevo v okne (bud je tam modre IE logo a ok nebo je tam nastala chyba a vykricnik a jde to rozkliknout)

Pokud tohle vsechno neuvedes, dalo by se to zjistit prave z funkcni ukazky a PHP kodu (ktery je spis pro to, podivat se, jestli neni chyba nekde v PHP, tim padem by jsi byl v jinem foru, prave ted)
peta
Profil *
prasopsisko
Jo, a jeste viz Leo, kdyz to mas v PHP, tak tam JS snad ani nemusi byt, ne?
Maximalne u takovehoto problemu bych pomoci JS meni SRC pomoci skryteho iframu pri stisknuti Odeslat v okamziku, kdy JS objevi chybu ve formulari. Aby se nemusel reloadovat cela stranka. Pokud se cela stranka muze znovu nacist, tak nechapu, proc tam davat JS?
prasopsisko
Profil *
Díky za rady ale stejně to prostě nejde...

Ad Leo a komentáře : jenže já tady žádnou protispamavou ochranu nevidim tak jsem asi blbej...

Ad Leo a uvozovky : zkouěel jsem všechno bez uvozovek, s nima, s apostrofama a furt nic....

Ad Peta a pravidla : jasně že máš pravdu že bych sem měl dát zdroják, ale já jsem myslel že to bude triviální problém... a ty příkazy co jsi mi napsal buď dělaly to samé co teď nebo to nefungovalo a celé to ověřování to vynechalo

Tak se to pokusím konkretizovat, protože jsem z toho jelen :)

toto je můj formulář :

<form class="main" method="POST" action="kniha-odeslano.php" enctype="multipart/form-data" name="vyhledavani" onSubmit="return kontrola();">
<p>Jméno:<br><input class="form" type="text" name="jmeno" size="24"></p>
<p>Vzkaz:<br><textarea class="form" rows="8" name="vzkaz" cols="22"></textarea></p>
<p>Foto:<br><input class="form" type="file" name="foto1" size="8"><br>
<input class="form" type="file" name="foto2" size="8"><br>
<input class="form" type="file" name="foto3" size="8"><br></p>

<p>Kontrolní kód:<br>
<img src='<?php echo $soubor;?>' alt="Kontrolní kód"/>
<center><input type="text" name="kod" size=6 maxlength=5/></center>

<p class="centrovani"><input class="form" type="submit" value="Odeslat"></p>
</form>

ta funkce je ale v jiném souboru (Že by toto byl ten problém ?), na který odkazuji v hlavičče

a toto je ona funkce

function kontrola()
{

var code = "<? echo $kod;?>"; //PRÁVĚ ŽE TOTO MI NEJDE

var text_jmena = self.document.forms.vyhledavani.jmeno.value;
var jmeno_ok = text_jmena != "";
var text_vzkazu = self.document.forms.vyhledavani.vzkaz.value;
var vzkaz_ok = text_vzkazu != "";
var text_kodu = self.document.forms.vyhledavani.kod.value;
var kod_ok = text_kodu == code;


alert(code); //A TOTO MI PRÁVĚ VYPÍŠE OKNO S "<? echo $kod;?>"


if (jmeno_ok == false) alert('Zadejte prosím své jméno!');

if (vzkaz_ok == false) alert('Napište prosím Váš vzkaz!');

if (kod_ok == false) alert('Kontrolní kód nesouhlasí!');


if (jmeno_ok==false || vzkaz_ok==false || kod_ok==false)
{
return false;
}
}

Ten $kod se mi na té hlavní stránce vygeneruje a ta hodnota očividně existuje :) tak prostě nechápu proč to nejde

Jinak děkuji za Vaše rady a úvahy
peta
Profil *
prasopsisko
no jasne, trivialni problem, ale je treba videt zdrojak v PHP a take jeho vystup v HTML.
Samozrejme si za drojaku dal jen neco, treba nevim, co je v takove promenne $soubor, ale doufej, ze to neni dulezite :)

Treba prvni vec, koukam, ze se jedna o foto. Na to mam takovy programek:
http://www.volny.cz/peter.mlich/www.htm#mssub5
# PHP images transform

Co je toto za prasarnu? Do JS zasadne nedavej PHP kod dovnitr funkce.
Mimo funkce ano, do funkci nikoliv.
---
function kontrola()
{
var code = "<? echo $kod;?>"; //PRÁVĚ ŽE TOTO MI NEJDE
---
Jak to overit?
var code = "<? echo $kod;?>";
alert (code); // a ted se ukaze, co v tom je
Navic, code mi prijde jako mozne klicove slovo jazyka JS.

Dalsi problem je tva logika. Pravdepodobne to mas v souboru xxx.js ktery linkujes do neceho. Ale protoze jsi nedal odkaz na stranku, tak muzu jen hadat, jak je ten JS umisten.
A i kdybys ho pouze includoval, tak pripona JS predurcuje data v souboru, takze
var code = "<? echo $kod;?>";
je normalni retezec. Spravne by mozna mel byt dolar zalomikovany, ted si nejsem jist, ale pouziva se v reg. vyrazech. Teda jako v normalnim retezci, jinak je to samozrejme pro php spravne.
Spravne by se ten soubor musel jmenovat *.php , aby byla data v nem povazovana za kombinaci html a php

Jinak bych udelal:
var f = self.document.forms.vyhledavani;
var text_jmena = f.jmeno.value;
var jmeno_ok = text_jmena != "";
var text_vzkazu = f.vzkaz.value;
var vzkaz_ok = text_vzkazu != "";
var text_kodu = f.kod.value;
var kod_ok = text_kodu == code;
a cele to dostane uplne jine rozmery :)
prasopsisko
Profil *
Ale tohle je prave to co jsem cekal ze se stane kdyz sem dam zdrojak... Ja jsem chtel vedet (a mas to i na zacatku tohodle threadu) jestli je nejaky zpusob jak predam nejakou promennou z PHP do JS. Potrebuju PRED odeslanim zkontrolovat jestli je ten kod spravne... moh jsem to udelat pres nejakej hidden, to mam ale pak ve zdrojaku napsanej ten kod jako value=abcd, coz si myslim ze to ty spamy prokouknou. nebo to jde ten script dat rovnou do toho zdrojaku jako mezi tagy script, ale to tam zas pak na zdojaku mam tu funkci napsanou a je tam primo if code==abcd tak neco... Proste problem mam JENOM v tom jak dostat tam tu hodnotu tak aby nebyla ve zdrojaku...
Bohuzel jsem take podlehl mozna nejakemu bludu ze v JS neni funkce na hashovani md5 protoze pak by mi to zase bylo jedno kdyby ten kod byl ve zdrojaku....

O tom co je $soubor nebo podobne veci neni potreba diskutovat, protoze v tom problem neni (kdyby te to opravdu trapilo :) tak je to akorat cesta k tomu vygenerovanemu obrazku... [./img/captcha/123.png])

a co se tyce te otazky co je to za prasarnu tak to jsem se ridil akorat tvymy pokyny viz o par prizpevku zpatky ale chapu ze to vzniklo nedokonalou informovanosti z me strany :)

potom to overovani tak jestli sis nevsim tak to tam prave mam a z toho vyplyva ze to nefunguje... takze dalsi rada zbytecna...

plus k me logice... to jakou to ma strukturu jsem tu snad vysvetlil zcela transparente, ale znova.... mam soubor kniha-navstev.php, v tom v hlavicce mam <script scr="./javascript/functions.js"></script> pak v tom mam to co jsem psal nahore - formular ten formular ma onsubmit tu kontrolu (ktera je deklarovana v tom fuctions.js) ten JS je umisten dobre, jak rikam JEDINY PROBLEM co mam je jak DOSTAT tu HODNOTU, kterou mam v tom kniha-navstev.php ulozenou v promenne $kod do toho SCRIPTU aby to mohl overit ....

ad ty dalsi rady: vsechny soubory jsou .php, externi js je .js... no a tech poslednich 6 radku je jen kosmeticka uprava kdyz se clovek boji pouzivat ctrl+c ctrl+v :)
peta
Profil *
prasopsisko
Tak tohle jsem presne cekal, nepochopil...
---
function kontrola()
{
var code = "<? echo $kod;?>"; //PRÁVĚ ŽE TOTO MI NEJDE
---
Tohle muzes udelat, ale nesmis to udel do vnejsiho souboru! Kapito?
Cili
---xxx.js
function kontrola(code)
{
}
---aaa.php
<link src=xxx.js>
<form onsubmit="kontrola('<? echo $kod;?>')";

"ze v JS neni funkce na hashovani md5"
Jo, to jsi podlehl bludu. V zakladnim JS samozrejme neni, ale esxistuje knihovna
* pajhome.org.uk JS sifrovani cryptography encrypt
http://pajhome.org.uk/crypt/index.html

To overovani, sory, alertu jsem si vsiml az po odeslani.

"strukturu jsem tu snad vysvetlil zcela transparente, ale znova.... mam soubor kniha-navstev.php, v tom v hlavicce mam <script scr="./javascript/functions.js"></script> pak v tom mam to co jsem psal nahore - formular ten formular ma onsubmit tu kontrolu (ktera je deklarovana v tom fuctions.js) ten JS je"
Tak tohle nevim, kde mas psane. Nikde nemas uvedene, co mas ve kterem souboru. Proto opakuji stale dokola, dej PH kod a samozrejme odkaz na stranku, kde z HTML kodu pozname, jakou mas strukturu souboru. Jen ciste nahodou mne napadlo, ze to mas asi ve vnejsim souboru, ktery ma *.JS a ty ocekavas, ze program na PHP bude zpracovavat jine pripony nez PHP jako PHP, asi. Spatna logika, rekl bych.
peta
Profil *
prasopsisko
pak hadam jeste, ze mas dalsi problem, ty chces odeslat heslo pres JS, zasifrovat do PHP a pak ho chces nejak overovat jeste v JS? Nebo asi odeslat sifrovane. Tak odeslat sifrovane viz ten odkaz z knihovnou.
Nebo, a to je lepsi moznost, nahodit HTTPS sifrovane spojeni a sifruje se ti vse. Ju?

Jinak bys musel zavolat skryty iframe src=sifruj.php a pouzit vysledek z nej, protoze PHP se zpracovava jeste pred odeslanim vygenerovaneho HTML ctenari. Kdezto S zpracovava az ctenaruv www prohlizec. Jinymi slovy, to je k te spatne logice v uvazovani.
prasopsisko
Profil *
No tak děkuji za všechny připomínky, ale nakonec jsem od tohoto nápadu upustil a na captchu jsem se vykašal...
Já jsem to buď chtě (nějak) odeslat nešifrovaně s tím že by se to při zobrazení zdrojového kódu nezobrazilo nikde, nebo by se to mohlo zobrazit, ale jenom zašifrovaně... to jsou 2 možnosti

Teď už je mi to s těma externíma souborama jasný že se to chová víceméně podle té přípony...
No ta špatná logika spočívá v tom že JS nerozumim, takže jsem myslel že tahle věc co jsem chtěl bude nějaká trivialita, ale neni...


>>>Jen ciste nahodou mne napadlo, ze to mas asi ve vnejsim souboru, ktery ma *.JS a ty ocekavas, ze program na PHP bude zpracovavat jine pripony nez PHP jako PHP, asi. Spatna logika, rekl bych.

to je právě to co jsem tak nějak nevěděl, moje špatná logika :)

ten PHP jsem sem nedával schválně protože je to tak prasácky že by 200 příspěvků bylo jen nějaký opravování mých chyb a ne toho co potřebuju....

ale poslední šanci ti dám (příklad):

tot index.php

<html>
<head>
<script src="/fukce.js" type="text/javascript"></script>
</head>
<body>
<?php $prom="ahoj; ?>
<form onsubmit="return kontrola()" name=jmeno method=post>
<input type=text name=kod>
<button type=submit value="send">
</form>
</body>
</html>

tot fukce.js

function kontrola()
{
if (document.forms.jmeno.kod.value != ///ČEMU???//// (resp. $prom, ale to je hodnota y php) ) return false;
}

toto by mohl být celý zdroják, a já chci vědět s čím mám porovnat to vyplněné políčko tak, aby se když zobrazím zdrojový kód (index.php) prohlížečem aby tam nikde nebylo napáno "ahoj" (což znamená že input hidden ne)
(a neříkej mi že mi tam chybí něco atd. ta základní struktura je snad jasná! :) )

jestli nad tím nechceš už přemejšlet tak to nech bejt, ale docela by mě to zajímalo...
prasopsisko
Profil *
jestli uvidim příspěvek že to mám špatně, protože u ahoj mi chybí uvozovky tak budu zlý :), v tom ten problém opravdu není, jde jen o tu strikturu :)
peta
Profil *
prasopsisko
ja sa chystam na nieco podobne, ale budem to odosielat v sesnoch
peta
Profil *
"a neříkej mi že mi tam chybí něco"
Ja mlcim :)))

<script src="/fukce.js" type="text/javascript"></script> ... chybny radek, lomitko navic a mozna schazi "n"

document.forms.jmeno.kod.value ehm? forms? ja to teda pouzivam trosku jinak, asi bych napsatl
form["jmeno"]
ale spise:
<form onsubmit="return kontrola()" name=jmeno method=post>
"return kontrola(this)"
function kontrola(xForm)
{
if (xForm.kod.value != "")
}

Mno, a cely na tom zajimavy je jeste to, ze v JS se neda skryt zdrojak. Cili porovnavani v JS s nejakym heslem je nebezpecne. Pokud chces porovnavat heslo, delej to jen v PHP a tam potom pouzijes presmerovani header("location: index.php?$sesny")

Samozrejme v JS by to i slo, musel bys to kodovat do MD5 nebo neceho jineho, aby to melo nejaky pocit bezpeci. Jenze pak neni problem si napsat aaa.htm na svem serveru, napsat si vlastni JS pro presmerovani a pak se ti tam vloupat :)
Take neni problem pouzit JS jako bookmarky (zalozky www prohlizece) a prepsat tve funkce na sve a to tak, ze mi to presmeruje na tu spravnou stranku.

Ses mohl zeptat rovnou, jestli jde v JS nejak bezpecne porovnavat heslo. Nejde. Jde to jen ztizit amaterum.
Jak rikam, zdrojak by to poresil.
Jestli ti va, ze by jsme ti nasli v tom jeste nejake chybky, tak to je smula. :) Chybky se najdou vsude :)
peta
Profil *
ja to treba pouzivam takto, odesilam do PHP:
http://mracek.xhosting.cz/chat/

<form name="flogin1" action="login.z.php" method="post" enctype="multipart/form-data">
<table align="center"><tbody><tr><td>
<fieldset>
<legend>Přihlášení</legend>
<table><tbody><tr>
<td> <label>Login</label></td>

<td> <input type="text" size="12" name="login"/></td>
</tr><tr>
<td> <label>Heslo</label></td>
<td> <input type="password" size="12" name="psw" /></td>
</tr><tr>
<td> <label>Jeskyně</label></td>
<td>
<select name="region">
<option value="0" selected="selected">Jihomoravský (0)</option>

<option value="1">Jihočeský (0)</option>
<option value="2">Karlovarský (0)</option>
<option value="3">Královéhradecký (0)</option>
<option value="4">Liberecký (0)</option>
<option value="5">Moravskoslezský (0)</option>
<option value="6">Olomoucký (0)</option>

<option value="7">Pardubický (0)</option>
<option value="8">Plzeňský (0)</option>
<option value="9">- PRAHA - (0)</option>
<option value="10">Středočeský (0)</option>
<option value="11">Ústecký (0)</option>
<option value="12">Vysočina (0)</option>

<option value="13">Zlínský kraj (0)</option>
<option value="14">- Zahraničí- (0)</option>
</select>
</td>
</tr><tr>
<td> <label>Pohlaví</label></td>
<td> <input type="radio" value="0" name="gender"/><label>muž</label>
<input type="radio" value="1" name="gender"/><label>žena</label></td>

</tr><tr>
<td> &nbsp;</td>
<td> <input type="submit" value="Ok" class="butt"/></td>
</tr></tbody></table>
</fieldset>
</td></tr></tbody></table>
</form>
peki2
Profil *
ja pouzivam na captchu gd kniznicu a data ukladam do db s IP ak je kod ok tak zaznam vymazem ak neni tak tiez :) ale jedna sa o to ze to ide fajn aj bez js
Toto téma je uzamčeno. Odpověď nelze zaslat.

0