Cibiņš Posted October 7, 2009 Report Share Posted October 7, 2009 (edited) Nesaprotu kapēc nestrādā errors, kurš parādās ja lauks ir tukšs..bet nostrādā "You must enter a valid email!"..un vēl bonusā norauj lapai apakšu vispār jeb izkropļo lapu.. :( Tāpat arī errors, kurš parādās ja e-pasts jau ir reģistrēts..arī izcūko lapu. Bet kad emails ir reģistrēts sekmīgi tad prikoli neparādās tad strādā kā vajag. Kas par desām? <?php include ('mailValidation.php'); $email = $_POST ['email']; $registermail = "INSERT INTO `regMails` (`email`) "."VALUES ('".$email."')"; $checkmail = mysql_query("SELECT * FROM regMails WHERE email='$email'"); $email_exist = mysql_num_rows($checkmail); if($email_exist > 0){ $errormessage = "This email is allready registered."; unset($email); include 'regmailform.php'; die(); } if ( $_GET["op"] == "reg" ) { $bInputFlag = false; foreach ( $_POST as $field ) { if ($field == "") { $bInputFlag = false; } else { $bInputFlag = true; } } if ($bInputFlag == false) { $errormessage = "Cannot register empty field!"; include ('regmailform.php'); die(); } elseif (validate_email($email)) { $errormessage = "Thanks for registering!"; include ('regmailform.php'); } else { $errormessage = "You must enter valid e-mail!"; include ('regmailform.php'); die(); } $q = $registermail; $r = mysql_query($q); if ( !mysql_insert_id() ) { $errormessage = "Error: User not added to database."; include ('regmailform.php'); die(); } else { header("Location: register.php?op=reg"); } } else { include ('regmailform.php'); } ?> Edited October 7, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
briedis Posted October 7, 2009 Report Share Posted October 7, 2009 To lapas apakšu noteikti norauj tas die(), sīkāk nepētīju... Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 7, 2009 Author Report Share Posted October 7, 2009 (edited) Jā zinu bet ja to die(); izņem tad tukšums aiziet uz datubāzi. Pietam ja tukš lauks tad viņam vajadzētu parādīt erroru ka tukšu lauku nevar reģistrēt nevis izmest erroru ka e-pasts ir nederīgs. Respektīvi, ja lauks atstāts tukšs, vajadzētu nostrādāt šai f-jai $errormessage = "Cannot register empty field!"; include ('regmailform.php'); die(); nevis šai $errormessage = "You must enter valid e-mail!"; include ('regmailform.php'); die(); Ja to die izņem tad viņš aizsūta mēslus uz datubāzi. Edited October 7, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
homers Posted October 7, 2009 Report Share Posted October 7, 2009 if(!empty($_POST['abc'])){ Šadi taču arī var? Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 7, 2009 Author Report Share Posted October 7, 2009 Redziet kas ir..ja atsevišķi nošķir un testē to formu tad strādā normali. Bet tiklīdz lapā iebāž tā gļuko.. Pietam uz tukšo lauku ja lauks ir tukšs tad uz to norāda zemāk esošais skripts, tik nesaprotu kapēc viņš nestrādā. $bInputFlag = false; foreach ( $_POST as $field ) { if ($field == "") { $bInputFlag = false; } else { $bInputFlag = true; } } if ($bInputFlag == false) { $errormessage = "Cannot register empty field!"; include ('regmailform.php'); die(); } Quote Link to comment Share on other sites More sharing options...
Val Posted October 7, 2009 Report Share Posted October 7, 2009 (edited) sākumā vajag pielikt pārbaudi, ka $_POST['email'] ir padots, a to tev jau 2. rindiņā $email mainīgais var neko nesaturēt... http://lv.php.net/isset http://lv.php.net/manual/en/function.empty.php Edited October 7, 2009 by Val Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 7, 2009 Author Report Share Posted October 7, 2009 (edited) Bet kādēļ ja aizvāc to kas pārbauda e-pasta derīgumu ir vai nau derīgs tad strādā tas sūds??? Pietam bonusaa nerauj lapai apakšu nost..?? UN kad reģistrācija izpildīta sekmīgi arī apakša netiek norauta..?? Edited October 7, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
Val Posted October 7, 2009 Report Share Posted October 7, 2009 kristāla lode prasa, lai tu parādi mailValidation.php saturu. Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 7, 2009 Author Report Share Posted October 7, 2009 (edited) Sākumā cīnījos ar šo, kamēr visu dabūju iekšā ko vajag. Šeit tā forma strādā. Bet tiklīdz ieliek to register.php lapā tā viss - gļuki. Pašai lapai ir šāda uzbūve - 3 daļas. <div id=header></div> <div id=main_body></div> <div id=footer></div> Tā forma stāv iekš div id=main_body. Reāli viss ir ok, ja reģistrē kādu mailu, viss strādā kā nākās. Bet tiklīdz atstāj lauku tukšu, vai ievada nepareizu e-pastu vai ievada jau datubāzēs esošu e-pastu un visos 3 gadījumos nospiež Submit pogu,tā pirmajos 2 gadījumos minētajās darbībās izmet kļūdu ka e-pasts ir nederīgs, lai gan vajadzētu pirmajā gadījumā būt kļūdas ziņojumam ka nevar reģistrēt tukšu lauku. Visos 3 gadījumos pazūd <div id=footer></div> daļa, bet pārējās header un main_body daļas paliek. register.php <?php include ('mailValidation.php'); $email = $_POST ['email']; $registermail = "INSERT INTO `test` (`email`) "."VALUES ('".$email."')"; include ("dbConfig.php"); $checkmail = mysql_query("SELECT * FROM test WHERE email='$email'"); $email_exist = mysql_num_rows($checkmail); if($email_exist > 0){ echo "This email is allready registered."; unset($email); include 'regform.php'; die(); } if ( $_GET["op"] == "reg" ) { $bInputFlag = false; foreach ( $_POST as $field ) { if ($field == "") { $bInputFlag = false; } else { $bInputFlag = true; } } if ($bInputFlag == false) { echo "Cannot register empty field!"; include ('regform.php'); (die); } if (validate_email($email)) { echo "Email is valid!"; } else { echo "You must enter valid e-mail!"; include ('regform.php'); die(); } $q = $registermail; $r = mysql_query($q); if ( !mysql_insert_id() ) { echo "Error: User not added to database."; include ('regform.php'); die(); } else { header("Location: register.php?op=thanks"); } } elseif ( $_GET["op"] == "thanks" ) { echo "Thanks for registering!"; include ('regform.php'); } else { include ('regform.php'); } ?> mailValidation.php saturs: <?php function validate_email($email) { // Create the syntactical validation regular expression $regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"; // Presume that the email is invalid $valid = 0; // Validate the syntax if (eregi($regexp, $email)) { list($username,$domaintld) = split("@",$email); // Validate the domain if (getmxrr($domaintld,$mxrecords)) $valid = 1; } else { $valid = 0; } return $valid; } ?> regform.php <?php echo "<form action=\"?op=reg\" method=\"POST\">\n"; echo "Email Address: <input name=\"email\" MAXLENGTH=\"25\"><br />\n"; echo "<input type=\"submit\">\n"; echo "</form>\n"; ?> Edited October 7, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 7, 2009 Author Report Share Posted October 7, 2009 (edited) Sākumā cīnījos ar šo, kamēr visu dabūju iekšā ko vajag. Šeit tā forma strādā. Bet tiklīdz ieliek to register.php lapā tā viss - gļuki. Pašai lapai ir šāda uzbūve - 3 daļas. <div id=header></div> <div id=main_body></div> <div id=footer></div> Tā forma stāv iekš div id=main_body. Reāli viss ir ok, ja reģistrē kādu mailu, viss strādā kā nākās. Bet tiklīdz atstāj lauku tukšu, vai ievada nepareizu e-pastu vai ievada jau datubāzēs esošu e-pastu un visos 3 gadījumos nospiež Submit pogu,tā pirmajos 2 gadījumos minētajās darbībās izmet kļūdu ka e-pasts ir nederīgs, lai gan vajadzētu pirmajā gadījumā būt kļūdas ziņojumam ka nevar reģistrēt tukšu lauku. Visos 3 gadījumos pazūd <div id=footer></div> daļa, bet pārējās header un main_body daļas paliek. Man šķiet ka šitais traucē: if (validate_email($email)) { echo "Email is valid!"; } register.php <?php include ('mailValidation.php'); $email = $_POST ['email']; $registermail = "INSERT INTO `test` (`email`) "."VALUES ('".$email."')"; $checkmail = mysql_query("SELECT * FROM test WHERE email='$email'"); $email_exist = mysql_num_rows($checkmail); if($email_exist > 0){ echo "This email is allready registered."; unset($email); include 'regform.php'; die(); } if ( $_GET["op"] == "reg" ) { $bInputFlag = false; foreach ( $_POST as $field ) { if ($field == "") { $bInputFlag = false; } else { $bInputFlag = true; } } if ($bInputFlag == false) { echo "Cannot register empty field!"; include ('regform.php'); (die); } if (validate_email($email)) { if ( $_GET["op"] == "thanks" ) { echo "Thanks for registering!"; include ('regform.php'); } } else { echo "You must enter valid e-mail!"; include ('regform.php'); die(); } $q = $registermail; $r = mysql_query($q); if ( !mysql_insert_id() ) { echo "Error: User not added to database."; include ('regform.php'); die(); } else { header("Location: register.php?op=thanks"); } } else { include ('regform.php'); } ?> mailValidation.php saturs: <?php function validate_email($email) { // Create the syntactical validation regular expression $regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"; // Presume that the email is invalid $valid = 0; // Validate the syntax if (eregi($regexp, $email)) { list($email,$domaintld) = split("@",$email); // Validate the domain if (getmxrr($domaintld,$mxrecords)) $valid = 1; } else { $valid = 0; } return $valid; } ?> regform.php <?php echo "<form action=\"?op=reg\" method=\"POST\">\n"; echo "Email Address: <input name=\"email\" MAXLENGTH=\"25\"><br />\n"; echo "<input type=\"submit\">\n"; echo "</form>\n"; ?> Ja izņemu die(); f-ju tad apakša netiek norauta, bet mēsli tomēr aizsūtās uz db. Edited October 8, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted October 8, 2009 Report Share Posted October 8, 2009 Tev šī daļa nav diez ko loģiska. Ja ir vairāki lauki un pirmais bus tukšs, bet otrais aizpildīts, tad $bInputFlag == true. Pietiek, pat, ka tev submit pogai ir norādīts name un value un formā būs pēdējais elements, lai šis vienmēr būtu true, jo to pados kā pēdējo. Tas arī visdrīzāk ir iemesls kāpēc iziet pārbaudi uz tukšajiem laukiem, bet failo pie email patiesuma pārbaudes. foreach ( $_POST as $field ) { if ($field == "") { $bInputFlag = false; } else { $bInputFlag = true; } } Tavs pirmais variants ar $errormessage = "You must enter valid e-mail!"; labāks, jo tad vari iztikt bez die(). Atliek tik pirms ievades pārbaudīt vai errormessage kaut ko satur, lai izlemtu - dati ir derīgi vai nē. if(empty($errormessage)){ $q = $registermail; $r = mysql_query($q); } Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 8, 2009 Author Report Share Posted October 8, 2009 (edited) Tev šī daļa nav diez ko loģiska. Ja ir vairāki lauki un pirmais bus tukšs, bet otrais aizpildīts, tad $bInputFlag == true. Pietiek, pat, ka tev submit pogai ir norādīts name un value un formā būs pēdējais elements, lai šis vienmēr būtu true, jo to pados kā pēdējo. Tas arī visdrīzāk ir iemesls kāpēc iziet pārbaudi uz tukšajiem laukiem, bet failo pie email patiesuma pārbaudes. foreach ( $_POST as $field ) { if ($field == "") { $bInputFlag = false; } else { $bInputFlag = true; } } Tavs pirmais variants ar $errormessage = "You must enter valid e-mail!"; labāks, jo tad vari iztikt bez die(). Atliek tik pirms ievades pārbaudīt vai errormessage kaut ko satur, lai izlemtu - dati ir derīgi vai nē. if(empty($errormessage)){ $q = $registermail; $r = mysql_query($q); } Vēlreiz saku: izņemot die(); MĒSLI vai TUKŠUMI aiziet uz datubāzi! Pietam šis if(empty($errormessage)){ $q = $registermail; $r = mysql_query($q); } ir nederīgs jo nosūta tukšumu uz datubāzi nevis izpilda vajadzīgās operācijas + bonusā vienalga norauj lapai apakšu. Ja lauks ir tukss, viņam nekas nav jāreģistrē nav jāpalaiž nekādi kvēriji. Edited October 8, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted October 8, 2009 Report Share Posted October 8, 2009 (edited) Kaut kā šausmīgi jocīgi tev tur viss sataisīts. Pilnībā neiedziļinājos, bet dari kaut kā tā: if(email_valid($email) { //kaut kas kas nu tev te ir $valid_email = false; //šamo var rakstīt die() vietā } // .. te iet kods kas tur ir if($email_valid) { mysql_query($q); } else { //ko dara kļūdas gadījumā } Ceru, ka daudz maz pareizi sapratu kas tur ir... Edited October 8, 2009 by rATRIJS Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 8, 2009 Author Report Share Posted October 8, 2009 (edited) Kaut kā šausmīgi jocīgi tev tur viss sataisīts. Pilnībā neiedziļinājos, bet dari kaut kā tā: if(email_valid($email) { //kaut kas kas nu tev te ir $valid_email = false; //šamo var rakstīt die() vietā } // .. te iet kods kas tur ir if($email_valid) { mysql_query($q); } else { //ko dara kļūdas gadījumā } Ceru, ka daudz maz pareizi sapratu kas tur ir... Neder. Lapā nerāda formu + rauj apakšu nost. :( Edited October 8, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted October 8, 2009 Report Share Posted October 8, 2009 Inklūdo beigās regfrom.php Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.