Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare bec far VW Touran 1T3

Ce parere aveti de viteza/ modul ...

Love Lies Bleeding - 2024

Cum sterg mails din Promotions
 Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica

Ce componenta e asta si ce ziceti...
 Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg
 Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...
 

mic ajutor la un formular

- - - - -
  • Please log in to reply
20 replies to this topic

#1
tornad0

tornad0

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 01.07.2007
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
silverdrop

silverdrop

    Junior Member

  • Grup: Members
  • Posts: 74
  • Înscris: 08.02.2009
if ($_POST["nume"] == "") echo "Nu ati introdus numele!";


#3
ThunderSS

ThunderSS

    Active Member

  • Grup: Members
  • Posts: 1,102
  • Înscris: 27.09.2007

View Posttornad0, 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
tornad0

tornad0

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 01.07.2007
<?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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
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? :P

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
stefy

stefy

    Member

  • Grup: Members
  • Posts: 489
  • Înscris: 18.04.2006
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
vezi vreo conexiune?  :scratchchin: :rolleyes:  
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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
	  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! :P

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 ;)

View Poststefy, 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.
Asta
  

View PostOriginalCopy, 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? :P

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? :P

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
stefy

stefy

    Member

  • Grup: Members
  • Posts: 489
  • Înscris: 18.04.2006

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? :P

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
tornad0

tornad0

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 01.07.2007
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
tornad0

tornad0

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 01.07.2007
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
stefy

stefy

    Member

  • Grup: Members
  • Posts: 489
  • Înscris: 18.04.2006
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
tornad0

tornad0

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 01.07.2007
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
stefy

stefy

    Member

  • Grup: Members
  • Posts: 489
  • Înscris: 18.04.2006

View Posttornad0, 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
se rezolva:

<?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
tornad0

tornad0

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 01.07.2007
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
adormitu

adormitu

    Member

  • Grup: Members
  • Posts: 384
  • Înscris: 28.08.2008
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
tornad0

tornad0

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 01.07.2007
fi mai explicit adormitule.... insinuezi ca tot ce a facut stefy pt mine e pt firma pe care nu o am?

#17
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Are gauri de securitate :P

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
tornad0

tornad0

    Junior Member

  • Grup: Members
  • Posts: 160
  • Înscris: 01.07.2007
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate