mic ajutor la un formular
Last Updated: Mar 09 2009 19:59, Started by
tornad0
, Mar 06 2009 18:16
·
0
#1
Posted 06 March 2009 - 18:16
formularul meu se foloseste normal de util.php si salveaza intr-un fisier html numele, adresa si varsta
cum fac daca utilizatorul nu a bagat nici una dintre acestea sa ma duca pe aceeasi pagina cu rezultatul: nu ati introdus numele, sau adresa sau varsta. sau daca nu a bagat nici una dintre aceste sa returneze nu ati introdus numele adresa si varsta, si sa salveze in utilizator.html doar daca a introdus numele adresa si varsta si doar dupa asta sa ma duca pe alta pagina multumesc.html |
#2
Posted 06 March 2009 - 19:27
if ($_POST["nume"] == "") echo "Nu ati introdus numele!"; |
#3
Posted 06 March 2009 - 19:29
tornad0, on Mar 6 2009, 18:16, said: formularul meu se foloseste normal de util.php si salveaza intr-un fisier html numele, adresa si varsta cum fac daca utilizatorul nu a bagat nici una dintre acestea sa ma duca pe aceeasi pagina cu rezultatul: nu ati introdus numele, sau adresa sau varsta. sau daca nu a bagat nici una dintre aceste sa returneze nu ati introdus numele adresa si varsta, si sa salveze in utilizator.html doar daca a introdus numele adresa si varsta si doar dupa asta sa ma duca pe alta pagina multumesc.html Foarte haotic mesajul tau. Pentru a verifica daca o variabila a fost introdusa poti verifica lungimea sa. Sa presupunem ca tu primesti numele in variabila $_POST['nume']; Atunci cea mai simpla posibilitate de a verifica si afisa un mesaj de eroare este: if (strlen($_POST['nume'])==0) $_SESSION['error']="Nu ati introdus un nume!"; header('Location:pagina.php'); Exista si alte metode mai eficiente dar asta este cea mai simpla. |
#4
Posted 07 March 2009 - 22:37
<?php $nume = $_POST["nume"]; $adresa = $_POST["adresa"]; $varsta = $_POST["varsta"]; $util = fopen ("utilizatori.html" , "a"); if ($_POST["nume"] == "") echo "Nu ati introdus numele!<br>"; if ($_POST["adresa"] == "") echo "Nu ati introdus adresa!<br>"; if ($_POST["varsta"] == "") echo "Nu ati introdus varsta!<br>"; else fwrite ($util , '<br>nume: ' .$nume. '<br>adresa: ' .$adresa. '<br>varsta: ' .$varsta. '<br>' ); fclose ($util); header ("Location: pagina.html"); ?> asa cand introduc doar numele si apas trimite imi apare asa: Nu ati introdus adresa! Nu ati introdus varsta! Warning: Cannot modify header information - headers already sent by (output started at E:\xampp\htdocs\a\test.php:10) in E:\xampp\htdocs\a\test.php on line 25 deci e bine. ma atentioneaza ca nu am introdus adresa si varsta si nici nu salveaza in utilizatori.html cand introduc numele si varsta imi zice ca nu am introdus adresa dar imi salveaza in utilizatori.html cu adresa goala normal... nu inteleg de ce salveaza... nu vreau sa salveze decat atunci cand sunt introduse toate datele si inca ceva.... de ce apare warningu ala? Edited by OriginalCopy, 07 March 2009 - 22:49. |
#5
Posted 07 March 2009 - 22:55
Daca mama iti zice sa iei lapte, iei lapte si-l pui in frigider
Daca mama iti zice sa iei faina, iei faina Daca mama iti zice sa dormi, dormi, altfel te duci la scoala. Intrebare: daca te-ai dus la scoala, ai lapte in frigider? Mediteaza putin asupra acestui lucru. Cat despre "headers already sent", citeste Understanding how the Internet and the Web works, for PHP programmers, apoi aici: (better) Code practices - Issue #4. |
#6
Posted 08 March 2009 - 14:42
Cred ca minunatul cod ar fi:(nu l-am testat)
<?php if ($_POST['nume'] === ''){ echo 'Nu ati introdus numele! <br />'; } if ($_POST['adresa'] === ''){ echo 'Nu ati introdus adresa! <br />'; } if ($_POST['varsta'] === ''){ echo 'Nu ati introdus varsta! <br />'; } if ($_POST['nume'] != '' && $_POST['adresa'] != '' && $_POST['varsta'] !== ''){ header ('Location: pagina.html'); $util = fopen ('utilizatori.html' , 'a'); fwrite ($util , '<br />nume: ' .$_POST['nume']. '<br />adresa: ' .$_POST['adresa']. '<br />varsta: ' .$_POST['varsta']. '<br />' ); fclose ($util); } ?> Quote nu am introdus adresa si varsta ... nu salveaza in utilizatori.html Quote cand introduc numele si varsta ... salveaza in utilizatori.html Sunt si eu incepator in php dar nu am auzit de mai multe if-uri la care sa se aplice un singur else. In codul tau else-ul se aplica doar pt varsta => conditia ca scriptul sa scrie ceva in utilizatori.html e ca varsta ca contina ceva. Edited by stefy, 08 March 2009 - 14:57. |
#7
Posted 08 March 2009 - 15:14
1 <?php 2 session_start(); 3 if(isset($_POST['submit'])) { //dacă butonul "submit" a fost apăsat, ceea ce se întâmplă când un utilizator trimite un formular care are un buton "submit", atunci: 4 if(isset($_POST['username'])) { 5 if(!empty($_POST['username'])) {//validăm inputul, aici "username", vezi pasul urmator pentru o validare ca la carte :) 6 $_SESSION['username'] = $_POST['username']; 7 } 8 else {//username invalid. un username este invalid aici când este gol, adică are valoarea: ' 9 $error = 'username invalid';//programatorii isi creaza "o lume a lor" cand scriu programe. 10 //aici pur si simplu inventam o variabila "error" pe care o vom afisa mai tarziu 11 } 12 } 13 else {//aici ne aflam in situatia urmatoare: conform liniei 3, suntem pe ramura "daca butonul submit a fost apasat" 14 //insa inauntrul acestui else tratam aditional cazul: "... si username nu este setat" 15 /* 16 * altfel spus, aici tratam cazul: "daca butonul submit a fost apasat, insa "formularul" trimis nu contine un camp numit username" 17 * ceea ce se poate intampla doar in doua cazuri: 18 * 1. programatorul acestei pagini dinamice e adormit si a uitat sa puna <input type="text" name="username"> in formular 19 * 2. cineva, eventual un atacator, trimite un "formular", de exemplu cu cURL, si a uitat sa "introduca" un username 20 * 21 * Noi insa putem exclude cu certitudine cazul 1, caci vedem inputul mai jos, deci ramane cazul 2: 22 */ 23 $error = 'Ok, let\'s play'; 24 } 25 } 26 else {//altfel, daca butonul "submit" NU a fost "apasat" 27 } Liniile 3 si 26 intre liniile 4 si 24 faci prelucrarea datelor. Nu afisezi nimic, doar setezi variabile intermediare. Decat sa stai sa te chinui si peste o luna sau doua cu acelasi tip de problema, de ce nu incerci sa intelegi codul pe care ti l-am dat? Iti va fi mai usor pe termen lung Sau crezi ca-ti zic sa citesti din placerea de a te chinui? Nu-mi pasa! Intelege mai intai conceptele, pune intrebari unde nu intelegi, si cand ai ajuns sa mesteresti fluxul de executie/date revino la problema ta curenta. O vei rezolva in cateva minute PS: intreaba pe issue #4 ce nu intelegi din acel cod, nu aici stefy, on Mar 8 2009, 14:42, said: Sunt si eu incepator in php dar nu am auzit de mai multe if-uri la care sa se aplice un singur else. OriginalCopy, on Mar 7 2009, 22:55, said: Daca mama iti zice sa iei lapte, iei lapte si-l pui in frigider Daca mama iti zice sa iei faina, iei faina Daca mama iti zice sa dormi, dormi, altfel te duci la scoala. Intrebare: daca te-ai dus la scoala, ai lapte in frigider? Devine: Daca mama iti zice sa iei lapte, atunci iei lapte si-l pui in frigider altfel daca mama iti zice sa dormi, atunci dormi altfel te duci la scoala Acum intreaba-te: daca te-ai dus la scoala, ai lapte in frigider? Vezi ca se poate? Aditional, poti folosi acele variabile decizionale/intermediare pentru a-i da algoritmului tau o alura de "stateful", de exemplu: pleaca de la premiza ca: Am lapte = FALSE Am fost la scoala = FALSE Daca mama imi zice sa iau lapte, atunci iau lapte Am lapte = TRUE Daca mama imi zice sa dormi, atunci dorm altfel daca am lapte, atunci ma duc la scoala cu laptic in ghiozdanel altfel ma duc la scoala fara laptic in ghiozdanel Incearca sa modelezi astfel de situatii algoritmic. Am facut exemplul putin interactiv ca sa nu te pun sa citesti despre scheme logice prea abstracte si greu de inteles, dar carti sunt cu duiumul pe web daca esti interesat |
#8
Posted 08 March 2009 - 15:47
Quote Daca mama iti zice sa iei lapte, atunci iei lapte si-l pui in frigider altfel daca mama iti zice sa dormi, atunci dormi altfel te duci la scoala Acum intreaba-te: daca te-ai dus la scoala, ai lapte in frigider? Vezi ca se poate? Da, oarecum ar merge cu acel elseif. Daca il desparti ca else if vine: if (mamaLapte == TRUE){ //put the milk inside the fridge } else { if(mamaDormi == TRUE){ //go sleep }else{ //go to school }}Deci mamaLapte si mamaDormi au acelasi else "go to school" iar mamaLapte mai are ca else pe "go to sleep".Ai dreptate intr-un fel dar totusi e un else indirect care nu depinde doar de mamaLapte(si ce conditionala e aia in care else-ul nu depinde total de conditie, ci si de alti factori externi)...In fine, deja mi se pare ca o dam pe filozofie aici. Edited by stefy, 08 March 2009 - 15:52. |
#9
Posted 08 March 2009 - 17:38
OriginalCopy ms de ajutor dar nu beau lapte
mi-ai mutat topicu la incepatori dar mi se pare ca exemplul tau e mai mult decat pentru un incepator.... daca ai niste adrese cu tutoriale in romana.. sa inteleg si eu ce face session_start(); sau isset si etc... pana sa inteleg exemplul tau multe sticle de lapte trebuie sa beau... si eu cum nu beau lapte..... trebuie sa ma mai documentez |
#10
Posted 08 March 2009 - 18:25
inca ceva....
cand dau submit si nici un camp nu a fost completat imi spune nu ati introdus numele dar intr-o noua pagina... cum fac sa-mi afiseze acel mesaj pe acceasi pagina cu formularul si in dreptul casutei cu numele? |
|
#11
Posted 08 March 2009 - 18:59
Ca sa apara langa formular se mai complica putin scriptul.
Ar veni cam asa codul: <?php if (isset($_POST['submit'])){ if ($_POST['nume'] != '' && $_POST['adresa'] != '' && $_POST['varsta'] != ''){ header ('Location: pagina.html'); $util = fopen ('utilizatori.html' , 'a'); fwrite ($util , '<br />nume: ' .$_POST['nume']. '<br />adresa: ' .$_POST['adresa']. '<br />varsta: ' .$_POST['varsta']. '<br />' ); fclose ($util); }else{ echo '<form method="post">'; if ($_POST['nume'] === ''){ echo 'Nume :<input type="text" name="nume">Nu ati introdus numele! <br />'; }else{ echo 'Nume :<input type="text" name="nume"><br />';} if ($_POST['adresa'] === ''){ echo 'Adresa :<input type="text" name="adresa">Nu ati introdus adresa! <br />'; }else{ echo 'Adresa :<input type="text" name="adresa"><br />';} if ($_POST['varsta'] === ''){ echo 'Varsta :<input type="text" name="varsta">Nu ati introdus varsta! <br />'; }else{ echo 'Varsta :<input type="text" name="varsta"><br />';} echo '<input type="submit" value="Trimite" name="submit"> </form>'; } }else{ echo ' <form method="post"> Nume :<input type="text" name="nume"><br /> Adresa :<input type="text" name="adresa"><br /> Varsta :<input type="text" name="varsta"><br /> <input type="submit" value="Trimite" name="submit"> </form>'; } ?>posibil sa fie mici erori de parse Tutoriale in romana sunt mai putine dar destule: unul bunicel ar fi http://www.oriceon.c...torial_v2.1.rar Si ai google la dispozitie. isset(din engleza is set=este setat) spune daca un camp(sau mai multe) este sau nu setat. Daca unul dintre argumente(chestiile despartite cu virgula din paranteza isset) nu este setat (Atentie: in $k= '', $k este setat, chiar daca nu contine nimic.Nu confunda empty cu set) functia returneaza fals. Sesiunile sunt mai complexe putin, cauta pe google "sesiuni php tutorial" si vei gasi destule explicatii. Apropo, in caz ca nu ai observat codul php de mai sus contine tot formularul,(este tot in 1 sg pag) nu ai nevoie de formularul care-l foloseai pana acum pt ca este generat in script. Edited by stefy, 08 March 2009 - 19:12. |
#12
Posted 08 March 2009 - 19:10
mersi stefy este exact ce-mi doresc..... dar cu o singura mica problema. cand introduc doar numele si apas trimite, ce am introdus la nume dispare ca si cum as fi apasat ctrl + f5. vreau sa ramana completat nu sa dispara
|
#13
Posted 08 March 2009 - 19:24
tornad0, on Mar 8 2009, 19:10, said: mersi stefy este exact ce-mi doresc..... dar cu o singura mica problema. cand introduc doar numele si apas trimite, ce am introdus la nume dispare ca si cum as fi apasat ctrl + f5. vreau sa ramana completat nu sa dispara <?php if (isset($_POST['submit'])){ if ($_POST['nume'] != '' && $_POST['adresa'] != '' && $_POST['varsta'] != ''){ header ('Location: pagina.html'); $util = fopen ('utilizatori.html' , 'a'); fwrite ($util , '<br />nume: ' .$_POST['nume']. '<br />adresa: ' .$_POST['adresa']. '<br />varsta: ' .$_POST['varsta']. '<br />' ); fclose ($util); }else{ echo '<form method="post">'; if ($_POST['nume'] === ''){ echo 'Nume :<input type="text" name="nume">Nu ati introdus numele! <br />'; }else{ echo 'Nume :<input type="text" name="nume" value="'.$_POST['nume'].'"><br />';} if ($_POST['adresa'] === ''){ echo 'Adresa :<input type="text" name="adresa">Nu ati introdus adresa! <br />'; }else{ echo 'Adresa :<input type="text" name="adresa" value="'.$_POST['adresa'].'"><br />';} if ($_POST['varsta'] === ''){ echo 'Varsta :<input type="text" name="varsta">Nu ati introdus varsta! <br />'; }else{ echo 'Varsta :<input type="text" name="varsta" value="'.$_POST['varsta'].'"><br />';} echo '<input type="submit" value="Trimite" name="submit"> </form>'; } }else{ echo ' <form method="post"> Nume :<input type="text" name="nume"><br /> Adresa :<input type="text" name="adresa"><br /> Varsta :<input type="text" name="varsta"><br /> <input type="submit" value="Trimite" name="submit"> </form>'; } ?> asta ar trebui sa mearga. -daca mai ai nevoie de un script da-mi un PM, chiar nu prea am ce face si nu mi-ar strica putina practica. Edited by stefy, 08 March 2009 - 19:39. |
#14
Posted 08 March 2009 - 19:50
da ms ce trebuia sa fac era sa adaug value="'.$_POST['varsta'].'"
ms de ajutor ai primit PM de la mine? am incercat sa trimit dar nu sunt sigur ca l-ai primit |
#15
Posted 09 March 2009 - 19:05
offtopic
@tornad0: presupun ca si-l platesti pe stefy, ca nu doar te ajuta, ci iti face munca... vai si-amar de asa ceva e facut pentru o firma... |
|
#16
Posted 09 March 2009 - 19:40
fi mai explicit adormitule.... insinuezi ca tot ce a facut stefy pt mine e pt firma pe care nu o am?
|
#17
Posted 09 March 2009 - 19:43
Are gauri de securitate
adormitu isi facea probleme ca ar fi pentru vr-o firma, d-aia a zis ca vai si-amar. Dar daca e doar pentru uz personal merge. |
#18
Posted 09 March 2009 - 19:45
mi-am dat seama ca are gauri de securitate pt ca am facut o comparatie cu codul tau, OriginalCopy, am vazut ca e diferit al tau contine session ala..... deci mai exact unde e gaura de securitate? si ce poate sa faca cineva cu intentii rele?
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users