Jump to content
php.lv forumi

Nestrādā pārbaude vai lauks tukšs.


Cibiņš

Recommended Posts

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 by MCWeb.lv
Link to comment
Share on other sites

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 by MCWeb.lv
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by MCWeb.lv
Link to comment
Share on other sites

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 by MCWeb.lv
Link to comment
Share on other sites

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 by MCWeb.lv
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by MCWeb.lv
Link to comment
Share on other sites

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 by rATRIJS
Link to comment
Share on other sites

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 by MCWeb.lv
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...