AlMalalah Posted January 25, 2014 Report Posted January 25, 2014 (edited) <!DOCTYPE html><!--To change this license header, choose License Headers in Project Properties.To change this template file, choose Tools | Templatesand open the template in the editor.--><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input type="text" name="MyText" value="tyrtyt" /></br> <?php // put your code here if(isset($_POST['MyText'])){ $username = $_POST['MyText']; print($username); }else{ echo $username; } ?> </body></html>Cand il rulez pe Xamp, in localhost imi da eroarea asta:Undefined index: MyText.As vrea sa corectez eroarea dar in asa fel incat atunci cand il urc pe server in forma finala sa nu aiba gauri de securitate.Cum sa fac asta ?Multumesc mult !PS: 1. Este doar un textbox, fara buton de submit, iar in forma finala tot asa va fi, fara buton.2. I-am dat asa la vrajeala o valoare statica de "tyrtyt". Edited January 25, 2014 by AlMalalah Quote
SticKyWoX Posted January 25, 2014 Report Posted January 25, 2014 Ai uitat sa pui <form> </form> Quote
AlMalalah Posted January 25, 2014 Author Report Posted January 25, 2014 Ai uitat sa pui <form> </form>Am pus si form tag-urile si eroarea e aceeasi. Quote
eusimplu Posted January 25, 2014 Report Posted January 25, 2014 (edited) Stiu ca sunt offtopic, dar nu amesteca php cu html, nu in halul ala. Il poti baga sus pe php simuland un Controller-View total dezorganizat, procedural, intr-un singur fisier si incalcand ceva standarde dar tot e mai bine decat amestecat. Edited January 25, 2014 by eusimplu Quote
eusimplu Posted January 25, 2014 Report Posted January 25, 2014 Am pus si form tag-urile si eroarea e aceeasi.Form-ul trebuie sa aiba si method="post".- $_POST si $_GET Quote
AlMalalah Posted January 25, 2014 Author Report Posted January 25, 2014 In primul rand, ala nu va merge niciodata decat cu AJAX. Ca sa existe $_POST, tre' sa trimiti datele cu buton de tip submit, integrate frumos intr-un form valid, sau sa folosesti AJAX.In al doilea rand, if-ul nu e true, deci trece la else, unde $username nu e definit dar totusi da eroarea ca si cum if-ul ar fi true. Why?Esti sigur ca ala e codul?Asta e codul. Vreau sa construiesc ceva de la zero.Acuma stau si ma gandesc ca cred ca ai dreptate, e musai cu AJAX. Nu pot sa fac cu buton de submit catre un fisier php care sa primeasca datele fiindca aplicatia pe care vreau sa o construiesc nu e cu buton de submit acolo si nici nu ar avea sens sa aiba (e vorba de o aplicatie mai mare, ceva mult mai complicat).Am pus echo $username; in else asa, de forma, ca sa vad mai mult ce se intampla, sa vad daca il "forteaza" sa-l foloseasca, oricum nu il lasam asa.Multumesc de ajutor tuturor ! Quote
aelius Posted January 25, 2014 Report Posted January 25, 2014 hint: utilizeaza smarty. php e php, template e template.nu face ciorba din cod. Quote
Robert1995 Posted January 25, 2014 Report Posted January 25, 2014 hint: utilizeaza smarty. php e php, template e template.nu face ciorba din cod.Smarty Sucks.On Topic :<?phpif(isset($_POST['submit'])) $myText = isset($_POST['my_text']) ? $_POST['my_text'] : '';?><!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="POST"> <?php if(isset($myText)) : ?> <div style="background: #e74c3c;color:#FFFFFF;padding:10px 15px;"> <?php echo $myText;?> </div> <?php endif;?> <input type="text" name="my_text" value="<?php echo isset($myText) ? $myText : '';?>"> <input type="submit" name="submit" value="Submit"/> </form> </body></html> Quote
AlMalalah Posted January 25, 2014 Author Report Posted January 25, 2014 Da, dar mie imi trebuie fara buton de submit, doar textboxul si sa citeasca automat daca e scris ceva in textbox si daca e scris, ce anume e scris in textbox si sa afiseze. Ar trebui ceva gen .OnValueChanged si sa fie default pe 0 iar daca i se schimba valoarea automat sa o ia si sa o afiseze in timp real. Quote
EAdrian Posted January 25, 2014 Report Posted January 25, 2014 (edited) Edit fiddle - JSFiddlev2 http://jsfiddle.net/Jm56K/3/@n3curatu - solu?ia ta este s? pui @ la variabile ? în cazul ?sta ?i eu m-a? l?sa de programare... Edited January 25, 2014 by EAdrian Quote
AlMalalah Posted January 25, 2014 Author Report Posted January 25, 2014 Gata, am inteles ce si cum.Multumesc mult de tot ! Quote
UnixDevel Posted January 25, 2014 Report Posted January 25, 2014 Asta ti se pare cod ... sau cod secure 1.daca trecei prin ph stiai ca poti pune simplu @ in gata lui $_P2. nu e secure ce faci tu acolo ... nu sanitezi deloc imputurile si poti ajunge la sql sau xss foarte usor3. eu m-as lasa de programare ... <body> <input type="text" name="MyText" value="tyrtyt" /></br> <?php // put your code here if(isset($_POST['MyText'])){ $username = $_POST['MyText']; print($username); }else{ echo $username; } ?> </body> Quote
AlMalalah Posted January 25, 2014 Author Report Posted January 25, 2014 Asta e doar temporar, pe urma ii fac secure si design. Quote
eusimplu Posted January 26, 2014 Report Posted January 26, 2014 @EAdrian: Nu stiu care ar trebui sa se lase din php dintre voi doi, dar eu te sfatuiesc sa intelegi ca daca eu o sa ajung sa citesc cod scris de tine unde voi vedea 50 de isset-uri voi inchide sublime-ul si ma voi intoarce la cafeaua mea linistita. De ce? Prefer sa inteleg logica aplicatiei fara sa ma lovesc de cod inutil.Pentru erorile utile doar in cazul de cautare a bug-urilor se foloseste PHP: set_error_handler - Manual.Faza cu if la fiecare _REQUEST este foarte slab discutata, deoarece dupa cum sigur o sa-ti dai seama si singur nimeni nu-si pierde timpul cu a explica de ce cum face el e mai bine.PS: Afirmatia mea se aplica doar in unele cazuri. Quote
eusimplu Posted January 26, 2014 Report Posted January 26, 2014 @Gecko: Nu, in nici un caz @ nu este un lucru bun! E acelasi lucru ca short if-uri cu isset, doar ca putin mai scurt, dar la fel de deranjant la ochi. Mersi ca mi-ai dat ocazia sa explic ca din mesajul meu nu trebuie sa reiasa ca @ e mai bun ca short if cu isset.Nici sa nu se inteleaga ca dau in cap celor ce folosesc un short if cu isset, doar ca mie in faza cand ajung sa citesc astfel de cod mi se pare deranjat. Quote
EAdrian Posted January 26, 2014 Report Posted January 26, 2014 (edited) @EAdrian: Nu stiu care ar trebui sa se lase din php dintre voi doi.Eu cred c? tu ar trebui s?-?i pui alt avatar c? probabil nu ?tii ce reprezint? acel simbol.Ruleaz? în pula mea codul ?sta ?i vezi ce se întâmpl? când nu ai o verificare pe requestDROP TABLE IF EXISTS `test`;CREATE TABLE `test` ( `id` varchar(69) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;INSERT INTO `test` VALUES ('something');$sanitize = @$_GET['hook']; //il sanitizezi cum vrei tu aici w/emysql_query("UPDATE `test` SET `id` = '".$sanitize."'") or die(mysql_error());...apoi ruleaz?-l ?i p'?sta ?i descoper? diferen?a$sanitize = isset($_GET['hook']) ? $_GET['hook'] : 0; /*or die('invalid request')*/mysql_query("UPDATE `test` SET `id` = '".$sanitize."'") or die(mysql_error());dar eu te sfatuiesc sa intelegi ca daca eu o sa ajung sa citesc cod scris de tine unde voi vedea 50 de isset-uri voi inchide sublime-ul si ma voi intoarce la cafeaua mea linistita. .Eu am v?zut codul t?u ?i am crezut c? m? sinucid când am v?zut în ce hal este scris.PS: hahah HAHAHahahaha hahah aaa Edited January 26, 2014 by EAdrian Quote
eusimplu Posted January 26, 2014 Report Posted January 26, 2014 (edited) @EAdrian:Uita-te cum a scris Gecko, uita-te cum ai scris tu, o sa vezi ceva diferente,Hai sa-ti explic de ce nu-mi place isset-ul. Simplu, pentru ca eu prefer o validare putin mai detaliata., in exemplul de tine as valida daca $_GET['hook'] este int. Si in orice alte cazuri as folosii regex sa validez parametrii.Pentru a verifica daca s-a facut submit as folosii $_SERVER['REQUEST_METHOD'], pentru a detalia ca acea secventa se aplica numai pentru tipul de REQUEST post. Pentru ca vezi tu, intr-o structura MVC s-ar putea ca view-ul de submit si cel de form sa fie pe aceeasi actiune, si nu-i deloc frumos sa faci update pe un un request de tip GET.--------------------------------------------------------Poate ca am detaliat eu gresit inca de la inceput ce doream sa spun, si de asta tu mi-ai dat ceva in legatura cu tip-ul de request cand eu vorbeam de code readability. Daca e asa, spune-mi sa stiu sa reformulez. Edited January 26, 2014 by eusimplu Quote
EAdrian Posted January 26, 2014 Report Posted January 26, 2014 (edited) Hai sa-ti explic de ce nu-mi place isset-ul. Simplu, pentru ca eu prefer o validare putin mai detaliata., in exemplul de tine as valida daca $_GET['hook'] este int. Si in orice alte cazuri as folosii regex sa validez parametrii.Pentru a verifica daca s-a facut submit as folosii $_SERVER['REQUEST_METHOD'], pentru a detalia ca acea secventa se aplica numai pentru tipul de REQUEST post.Bun ai setat requestul c? este integer, dar dac? nu este setat? Ce se întâmpl?? Asta ?i era ideea din exemplul meu, c? dac? acel request nu este setat îti v? golii coloana respectiv?, o va face null, vid, etc., ai prins ideea.Tu ai zis în postul anteriorNu, in nici un caz @ nu este un lucru bun! E acelasi lucru ca short if-uri cu isset, doar ca putin mai scurt, dar la fel de deranjant la ochi. Cum po?i spune c? e acela?i lucru ?si nu-i deloc frumos sa faci update pe un un request de tip GET.E doar un exemplu, rezultatul e acela?i ?i pe POST Edited January 26, 2014 by EAdrian Quote
eusimplu Posted January 26, 2014 Report Posted January 26, 2014 Bun ai setat requestul c? este integer, dar dac? nu este setat? Ce se întâmpl?? Asta ?i era ideea din exemplul meu, c? dac? acel request nu este setat îti v? golii coloana respectiv?, o va face null, vid, etc.Tu ai zis în postul anteriorCum po?i spune c? e acela?i lucru ?Din privinta a cat de usor imi este sa citesc despre ce se vorbeste in acel cod, e la fel.Dar ai dreptate, ca functionalitate nu e deloc la fel, dar eu nu folosesc nici una din variante. In general folosesc un custom handler pentru E_NOTICE, care ma ajuta enorm la debug.Daca nu este setat atunci is_int va returna bool(false), ceea ce va genera o eroare ca input-ul nu a fost completat cu o valoare de tip INT. (eventual de validarea asta se ocupa o clasa speciala pentru form validation, nu-mi convine sa pierd timp cu ea) Quote
EAdrian Posted January 26, 2014 Report Posted January 26, 2014 Daca nu este setat atunci is_int va returna bool(false), ceea ce va genera o eroare ca input-ul nu a fost completat cu o valoare de tip INT. (eventual de validarea asta se ocupa framework-ul, nu-mi convine sa pierd timp cu ea)?i dac? este string?Dac? observi în ce am postat eu id nu este integer ci este string, dar probabil încercai s? te sco?i cumva. Bun... dar dac? verifici cu is_int, nu tot la acela?i c?cat ajungi s? verifici requestu ? Quote