Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
redenergy
HV veteran

liitunud: 22.03.2004
|
03.04.2009 16:01:48
Validate form |
|
|
php:
|
<?php $tulemus="TRUE"; // This is the flag and we set it to OK $error=""; // Initializing the message to hold the error messages if(strlen($nimi) < 2){ // checking the length of the entered userid and it must be more than 5 character in length $msg=$error."( Please enter user id more than 5 character length )<BR>"; $tulemus="FALSE"; //setting the flag to error flag. } if(strlen($pnimi) < 2){ // checking the length of the entered userid and it must be more than 5 character in length $msg=$error."( Please enter user id more than 5 character length )<BR>"; $tulemus="FALSE"; //setting the flag to error flag. } if(strlen($parool) < 4 ){ // checking the length of the entered password and it must be more than 5 character in length $msg=$error."( Please enter password of more than 5 character length )<BR>"; $tulemus="FALSE"; //setting the flag to error flag. } if($tulemus <>"TRUE"){ echo "<center>$msg <br> <input type='button' value='Retry' onClick='history.go(-1)'></center>"; }else{ // all entries are correct and let us proceed with the database checking etc
} ?>
|
Miks ta näitab mu form erroreid enne kui muljun submit?
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
03.04.2009 16:13:52
|
|
|
Ja mis erroreid ta näitab ?
Miks kasutada stringe booleani asemel ? ("TRUE"/"FALSE" vs true/false)
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
03.04.2009 16:16:16
|
|
|
Vea erroreid ei ole.
Näitab seda errorit mis ma ise olen kirjutanud - nimi liiga lühike, parool lühike jne.
Mis suurte ja väikeste tähtede vahe on muidu? - a mõtled sulge ja ülakomasid?
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
03.04.2009 16:35:31
|
|
|
php:
|
<?php $tulemus=true; $error=false; $msg=$error."( Please enter user id more than 5 character length )<BR>"; $tulemus=false; } $msg=$error."( Please enter user id more than 5 character length )<BR>"; $tulemus=false; } $msg=$error."( Please enter password of more than 5 character length )<BR>"; $tulemus=false; } if($tulemus <>"TRUE"){ echo "Kasutaja registreeritud"; }else{ } ?> <form action="liitu2.php" method="POST"> <table width="239" align="center"> <tr> <td width="95">Nimi:*</td> <td width="144"><input type="text" name="nimi" maxlength="20" class="input" /></td> </tr> <tr> <td width="95">Perekonnanimi:*</td> <td width="144"><input type="text" name="pnimi" maxlength="20" class="input" /></td> </tr> <tr> <td>Parool:*</td> <td><input type="password" name="parool" maxlength="20" class="input" /></td> </tr> <tr> <td><input type="text" name="email" class="input" /></td> </tr> <td>Sünnipäev:*</td> <td> <input type="text" size="1" maxlength="2" name="paev" class="input" /> <select name="kuu" class="input"> <option value="jaanuar" class="input">Jaan</option> <option value="veebruar" class="input">Veeb</option> <option value="marts" class="input">Märts</option> <option value="aprill" class="input">Aprill</option> <option value="mai" class="input">Mai</option> <option value="juuni" class="input">Juuni</option> <option value="juuli" class="input">Juuli</option> <option value="august" class="input">Aug</option> <option value="september" class="input">Sept</option> <option value="oktoober" class="input">Okt</option> <option value="november" class="input">Nov</option> <option value="detsember" class="input">Dets</option> </select> <input type="text" size="3" maxlength="4" name="aasta" class="input" /> </td> </tr> <tr> <td>Elukoht:*</td> <td><input type="text" name="elukoht" maxlength="29" class="input" /></td> </tr> <tr> <td>Sugu:*</td> <td> <select name="sugu" class="input"> <option value="mees" class="input">Mees</option> <option value="naine" class="input">Naine</option> </select> </td> </tr> <tr> <td colspan=2 align="center"><input type="submit" value="Liitu" class="input" /></td> </tr> </table> </form>
|
Panen terve koodi (poolik sest testin veel esimesi lõike).
See tekitab ikka palju segadust. Eile õhtu läbi uurisin erinevatelt lehtedelt.
Nüüd enne submit muljumist ütleb kasutaja registreeritud, kuigi pole kastidesse midagi sisestanud ja "liitu" muljunud
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
03.04.2009 16:43:21
|
|
|
$error muutuja hakkab sul stringi sisaldama, defineeri see vastavalt
Ära jooksuta seda algset osa enne läbi kui sul on asi submititud, kontrolli näiteks et kas mõni muutuja on üldse defineeritud
php:
|
if(isset($_POST['nimi'])) { }
|
Kasuta $_POST globaalset muutujat, mitte ära eelda register_globals sätte aktiveeritust (see on tabu alates 5.3.0 versioonist ja alates 6.0.0 versioonist kaob üldse tugi).
php:
|
if(strlen($_POST['nimi']) < 2){
|
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
Valdars
HV veteran

liitunud: 22.02.2003
|
03.04.2009 16:44:46
|
|
|
Ja mille järgi ta peaks aru saama, kas form on submititud või mitte?
|
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
44 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
03.04.2009 17:59:32
|
|
|
Miks sul error sedasi on? See ei anna sulle ju midagi. Ja selliselt ei liitu veateated, nagu sul vist plaanis on.
Peaksid nii tegema:
if(strlen($_POST['nimi']) < 2){
$msg.="( Please enter user id more than 5 character length )<BR>";
$tulemus=false;
}
if(strlen($_POST['pnimi']) < 2){
$msg.="( Please enter user id more than 5 character length )<BR>";
$tulemus=false;
}
if(strlen($_POST['parool']) < 4 ){
$msg.="( Please enter password of more than 5 character length )<BR>";
$tulemus=false;
} |
See osa peaks selline olema, $tulemus peab ju true võrduma, kui kõik olid täidetud.
if($tulemus ==TRUE){
echo "Kasutaja registreeritud"; |
Ja muidugi nagu mikk36 juba mainis pead kogu selle värgi panema kontrolli sisse, kas on nupule vajutatud.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
03.04.2009 19:25:45
|
|
|
php:
|
<?php $tulemus=true; $msg=''; if(isset($_POST['nimi'])) { } if(strlen($_POST['nimi']) < 2){ $msg.="( Please enter user id more than 2 character length )<BR>"; $tulemus=false; } if(isset($_POST['pnimi'])) { } if(strlen($_POST['pnimi']) < 2){ $msg.="( Please enter user id more than 2 character length )<BR>"; $tulemus=false; } if(isset($_POST['parool'])) { } if(strlen($_POST['parool']) < 4 ){ $msg.="( Please enter password of more than 4 character length )<BR>"; $tulemus=false; } if($tulemus ==true){ echo "Kasutaja registreeritud"; } ?>
|
Notice: Undefined index: nimi in /home/**/liitu.php on line 10
Notice: Undefined index: pnimi in /home/**/liitu.php on line 16
Notice: Undefined index: parool in /home/**/liitu.php on line 22
Kuidas see 'nimi' vale saab olla?
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
03.04.2009 19:34:02
|
|
|
Asi lihtsalt selles, et sa proovid sellega midagi teha kui teda pole. Pead panema kontrolli, et ei tehtaks ennem midagi, kui postitus saadetakse. See, mis sa seal vahele +anid ei tee ju midagi.
<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);
$tulemus=true;
$msg='';
if(isset($_POST['nimi'])) {
if(strlen($_POST['nimi']) < 2){
$msg.="( Please enter user id more than 2 character length )<BR>";
$tulemus=false;
}
if(strlen($_POST['pnimi']) < 2){
$msg.="( Please enter user id more than 2 character length )<BR>";
$tulemus=false;
}
if(strlen($_POST['parool']) < 4 ){
$msg.="( Please enter password of more than 4 character length )<BR>";
$tulemus=false;
}
if($tulemus ==TRUE){
echo "Kasutaja registreeritud";
}
}
?> |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
03.04.2009 19:51:57
|
|
|
oehh
php:
|
<?php $tulemus=true; $msg=''; if(isset($_POST['nimi'])) { if(isset($_POST['pnimi'])) { if(isset($_POST['parool'])) { if(strlen($_POST['nimi']) < 2){ $msg.="( Please enter user id more than 2 character length )<BR>"; $tulemus=false; } if(strlen($_POST['pnimi']) < 2){ $msg.="( Please enter user id more than 2 character length )<BR>"; $tulemus=false; } if(strlen($_POST['parool']) < 4 ){ $msg.="( Please enter password of more than 4 character length )<BR>"; $tulemus=false; } if($tulemus ==true){ echo "Kasutaja registreeritud"; } } } } ?>
|
liitu muljudes ei juhtu ikka midagi. Juhe on juba parajalt koos
saan aru, et see isset ongi kontroll eks?
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
03.04.2009 20:14:52
|
|
|
Ma ei teaküll, mida sa juhtumise all mõtled, kuid kui nüüd teed sellise faili, paned käima ja väljad täidad oma tingimuste järgi tuleb tekst Kasutaja registreeritud täpselt nii nagu peab olema.
<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);
$tulemus=true;
$msg='';
if(isset($_POST['nimi'])) {
if(isset($_POST['pnimi'])) {
if(isset($_POST['parool'])) {
if(strlen($_POST['nimi']) < 2){
$msg.="( Please enter user id more than 2 character length )<BR>";
$tulemus=false;
}
if(strlen($_POST['pnimi']) < 2){
$msg.="( Please enter user id more than 2 character length )<BR>";
$tulemus=false;
}
if(strlen($_POST['parool']) < 4 ){
$msg.="( Please enter password of more than 4 character length )<BR>";
$tulemus=false;
}
if($tulemus ==true){
echo "Kasutaja registreeritud";
}
}
}
}
?>
<form action="?" method="post">
<input type="text" name="nimi" size="40" maxlength="256">
<input type="text" name="pnimi" size="40" maxlength="256">
<input type="text" name="parool" size="40" maxlength="256">
<input type="submit" value="sss">
</form> |
Õigem oleks see kontroll ühe if sisse panna:
if(isset($_POST['nimi']) && isset($_POST['pnimi']) && isset($_POST['parool'])) {
// ** Siia kogu sisu, mis tahad peale postitust teha
} |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
04.04.2009 03:34:11
|
|
|
andrusny kirjutas: |
Õigem oleks see kontroll ühe if sisse panna:
if(isset($_POST['nimi']) && isset($_POST['pnimi']) && isset($_POST['parool'])) {
// ** Siia kogu sisu, mis tahad peale postitust teha
} |
|
"siia kogu sisu" sinna panen näiteks selle mis kogu selle info mul MySQL tabelisse kirjutab?
Suured tänud sulle
Lähen jooksma saan pea ehk selgemaks ja siis nuputan edasi
On kätte jõudnud öö.
Kuna eelmine kood siiski ei kuvanud errorit kui nt. nime lahter täitmata siis õppimise eesmärgil kirjutasin ise miskit.
Ime aga see töötab
php:
|
<?php if (isset($_POST['nimi'])) if(strlen($_POST['nimi']) < 2 == false) echo "Kasutaja registreeritud"; else echo "Nimi peab olema pikem kui kaks tähte!"; ?> <form action="test.php" method="POST"> <input type="text" name="nimi" "maxlength="256"> <input type="submit" value="sisesta"> </form>
|
Probleem on aga selles, et kui üritan selle järgi suurt form'i teha nagu üleval siis ei saa hakkama.
Kuidas sellega mitut input välja kontrollida? Või nii ei saagi?
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
04.04.2009 04:45:42
|
|
|
Sul oli ju juba eelnevate näidetega põhimõtteliselt kõik olemas, ainult veateadet ei väljastanud. Siinkohal tuleb võtta appi loogika ja vaadata üle kas kuskil on kästud üldse väljastada...
Üllatus missugune, $tulemus == true puhul antakse teade et regatud, aga muul juhul ei väljastata midagi.
Selle asemel et kogu koodi pidevalt nullist ümber teha tuleks teinekord lihtsalt läbi mõelda mida sa tahad et kood teeks ja seejärel üle vaadata mida sa tegelikult käsid koodil teha.
Ja selle sinu viimase näite kohta oskan öelda ainult WTF, seda mitmel põhjusel.
Esiteks selle if(strlen(..)<2 == false) peaks kirjutama if(strlen(..) >= 2) mis on loetavam ja arusaadavam.
Pluss sul html koodis on " märgid metsas takkaotsa.
Enne korralikult progema asumist on vaja ikka loogikat ka harjutada ja näpuga järje ajamist, progemine ei ole mingi maagia et viskad hunniku tähti kokku mis imeväel teevad midagi. Kõik on lihtne ja loetav loogika, kui ainult selle jaoks aega võtta...
Korrektne koodijupp, mis väljastaks erroreid, oleks selline:
php:
|
<?php $tulemus=true; $msg=''; if(isset($_POST['nimi'])) { if(strlen($_POST['nimi']) < 2){ $msg.="( Please enter user id more than 2 character length )<BR>"; $tulemus=false; } } if(isset($_POST['pnimi'])) { if(strlen($_POST['pnimi']) < 2){ $msg.="( Please enter user id more than 2 character length )<BR>"; $tulemus=false; } } if(isset($_POST['parool'])) { if(strlen($_POST['parool']) < 4 ){ $msg.="( Please enter password of more than 4 character length )<BR>"; $tulemus=false; } } if($tulemus){ echo "Kasutaja registreeritud"; } else { } ?>
|
_________________ Upload.ee - eestimaine failiupload |
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
04.04.2009 11:17:31
|
|
|
Et kui parooli ja pärisnime kaasa ei anna (jätad üldse POST'ist välja, näiteks custom lehega) ja ainult kasutajanimi on antud, siis saab ka ära regada, inzinz ?
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
04.04.2009 13:31:36
|
|
|
Uuesti hakkasin testiks tegema, et seda värki rohkem mõista. Üleöö ju ei saagi kõike osata.
Veateated näitab nüüd kenasti ära nagu plaanis oli. Aga liitu.php lähele minnes näiteks kuvab ta kohe, et kasutaja registreeritud.
Ma ei saa aru miks see nii on, pole ju submit veel muljutud
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
04.04.2009 13:45:47
|
|
|
Sa hiilid kangesti neist loogelistest sulgudest mööda. Jah võib kirjutada ilma kui ainult järgmine rida on vaja panna, kuid omal lihtsam, kui tegevus panna alati loogelistesse sulgudesse. Võimalik, et sul lihtsalt see rida jääb if alt välja.
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
04.04.2009 14:30:30
|
|
|
mikk36 kirjutas: |
Et kui parooli ja pärisnime kaasa ei anna (jätad üldse POST'ist välja, näiteks custom lehega) ja ainult kasutajanimi on antud, siis saab ka ära regada, inzinz ? |
Heh, see on see kui öösel kell 4 üritada teha midagi
Igatahes õige korrektne koodijupp, mis väljastaks erroreid, oleks selline:
php:
|
<?php $tulemus=true; $msg=''; if(! isset($_POST['nimi']) || strlen($_POST['nimi']) < 2){ $msg.="( Please enter user id more than 2 character length )<BR>"; $tulemus=false; } if(! isset($_POST['pnimi']) || strlen($_POST['pnimi']) < 2){ $msg.="( Please enter user id more than 2 character length )<BR>"; $tulemus=false; } if(isset($_POST['parool']) || strlen($_POST['parool']) < 4 ){ $msg.="( Please enter password of more than 4 character length )<BR>"; $tulemus=false; } //eedlusel et sinu registreeru nupu nimi on html's submit, kui on aga näiteks name="registreeru" siis kontrollid $_POST['registreeru'] if(isset($_POST['submit'])) { if($tulemus){ //teeme midagi, näiteks kontroll andmebaasist kas kasutajanimi olemas //kui kõik ok, sisestame ja väljastame echo "Kasutaja registreeritud"; } else { } } ?>
|
_________________ Upload.ee - eestimaine failiupload |
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
04.04.2009 21:38:25
|
|
|
Kas sa oled seda muidu proovinud ka
Sest mul ikka ei väljasta
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
04.04.2009 22:43:09
|
|
|
Väike viga oli sees. Kolmandas kontrollis oli ! märk puudu ja kood jooksius kokku.
tsitaat: |
if(isset($_POST['parool']) || strlen($_POST['parool']) < 4){ |
Tee sellest copy paste ja see töötab.
<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);
$tulemus=true;
$msg='';
if(!isset($_POST['nimi']) || strlen($_POST['nimi']) < 2){
$msg.="( Please enter user id more than 2 character length )<BR>";
$tulemus=false;
}
if(!isset($_POST['pnimi']) || strlen($_POST['pnimi']) < 2){
$msg.="( Please enter user id more than 2 character length )<BR>";
$tulemus=false;
}
if(!isset($_POST['parool']) || strlen($_POST['parool']) < 4){
$msg.="( Please enter user id more than 2 character length )<BR>";
$tulemus=false;
}
//eedlusel et sinu registreeru nupu nimi on html's submit, kui on aga näiteks name="registreeru" siis kontrollid $_POST['registreeru']
if(isset($_POST['nupp'])) {
if($tulemus){
//teeme midagi, näiteks kontroll andmebaasist kas kasutajanimi olemas
//kui kõik ok, sisestame ja väljastame
echo "Kasutaja registreeritud";
} else {
echo $msg;
}
}
?>
<form action="?" method="POST">
<input type="text" name="nimi" maxlength="256">
<input type="text" name="pnimi" maxlength="256">
<input type="text" name="parool" maxlength="256">
<input type="submit" name="nupp" value="sisesta">
</form> |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
04.04.2009 23:17:21
|
|
|
Super! Suured tänud teile.
Täidan selle järgi ülejäänud väljad ka.
Aga mida see ! täpsemalt juurde annab?
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
04.04.2009 23:49:26
|
|
|
! on eitus
true = !false
php:
|
$test = !false; # bool(true)
|
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
|