2016-04-07 19 views
0

Verileri girmek için bu koda sahibim ve tüm alanların doğruluğunu kontrol et. Doğrulama iyi çalışır, ancak sadece soyadı alanına girip gönder'i tıklatırsam, form gönderir ve halihazırda kayıtlı olan kullanıcı adını/e-postayı gösterir ve eğer soyadı boş bırakılırsa form gönderilmez. Bütün alanların doğruformu sadece bir alan ile gönderiliyor

<?php 
include'connect.php'; 
require_once './config.php'; 
// define variables and set to empty values 
$nameErr = $emailErr = $lnameErr = $fnameErr = $passErr = ""; 
$name = $email = $lname = $fname = $pass = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
if (empty($_POST["username"])) { 
$nameErr = "Username is required"; 
} else { 
$name = ($_POST["username"]); 
if (!preg_match("/^[a-zA-Z][a-zA-Z0-9-_\.]{5,30}$/",$name)) { 
    $nameErr = "6 to 30 characters,alphanumeric, underscore & dots only"; 
} 
} 

if (empty($_POST["email"])) { 
$emailErr = "Email is required"; 
} else { 
$email = ($_POST["email"]); 
// check if e-mail address is well-formed 
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    $emailErr = "Invalid email address"; 
} 
} 


if (empty($_POST["password"])) { 
$passErr = "Password is required"; 
}else { 
$pass = ($_POST["password"]); 
if (!preg_match("/(?=^.{8,30}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/",$pass)) { 
    $passErr = "Alphanumeric, Upper & Lower Case & Special Charcters required"; 
} 
} 

if (empty($_POST["fname"])) { 
$fnameErr = "First Name is required"; 
} else { 
    $fname = ($_POST["fname"]); 
    if (!preg_match("/^[a-zA-Z]{3,30}$/",$fname)) { 
    $fnameErr = "3 to 30 characters, aplphabets only"; 
} 
} 
if (empty($_POST["lname"])) { 
$lnameErr = "Last Name is required"; 
} else { 
$lname = ($_POST["lname"]); 
if (!preg_match("/^[a-zA-Z]{3,30}$/",$lname)) { 
    $lnameErr = "3 to 30 characters, aplphabets only"; 
} 


else{ 
if (isset($_POST["sub"])) { 
$fname = trim($_POST["fname"]); 
$lname = trim($_POST["lname"]); 
$name = trim($_POST["username"]); 
$pass = trim($_POST["password"]); 
$email = trim($_POST["email"]); 
$sql = "SELECT COUNT(*) AS count from users where email = :email_id or username = :username_id "; 
try { 
$stmt = $DB->prepare($sql); 
$stmt->bindValue(":email_id", $email); 
$stmt->bindValue(":username_id", $name); 
$stmt->execute(); 
$result = $stmt->fetchAll(); 

if ($result[0]["count"] > 0) { 
    echo"<div>E-mail or Username Already Registered</div>"; 
} else { 
    $sql = "INSERT INTO `users` (`username`, `password`, `email`, `firstname`, `lastname`) VALUES " . "(:name, :pass, :email, :fname, :lname)"; 
    $stmt = $DB->prepare($sql); 
    $stmt->bindValue(":fname", $fname); 
    $stmt->bindValue(":lname", $lname); 
    $stmt->bindValue(":name", $name); 
    $stmt->bindValue(":pass", md5($pass)); 
    $stmt->bindValue(":email", $email); 
    $stmt->execute(); 
    $result = $stmt->rowCount(); 


    if ($result > 0) { 
    require_once "PHPMailerAutoload.php";  
$lastID = $DB->lastInsertId(); 

$message = '<html><head> 
<title>Message</title> 
</head> 
<body>'; 
$message .= '<p>Hello!</p>'; 

$message .= "</body></html>"; 


// php mailer code starts 
$mail = new PHPMailer(true); 
$mail->IsSMTP(); // telling the class to use SMTP 
$mail->SMTPDebug = 0;      // enables SMTP debug information (for testing) 
$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->SMTPSecure = "tls";     // sets the prefix to the servier 
$mail->Host = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
$mail->Port = 587;     // set the SMTP port for the GMAIL server 
$mail->Username = '[email protected]'; 
$mail->Password = 'Password'; 
$mail->SetFrom('[email protected]', 'Name'); 
$mail->AddAddress($email); 
$mail->Subject = trim("Verification"); 
$mail->MsgHTML($message); 

try { 
$mail->send(); 
header('Location: welcome.php'); 
} 
catch (Exception $ex) { 
$msg = $ex->getMessage(); 
$msgType = "warning"; 
} 
} else { 
$msg = "Failed to create User"; 
$msgType = "warning"; 
} 
} 
} catch (Exception $ex) { 
echo $ex->getMessage(); 
} 
} 
} 
} 
} 
?> 


<form id="defaultForm" action="html.php" method="post"> 
<label>First Name</label> 
<input type="text" name="fname"><span style="color: red;" class="error"><?php echo $fnameErr;?></span><br> 
<label>Last Name</label> 
<input type="text" name="lname"><span style="color: red;" class="error"><?php echo $lnameErr;?></span><br> 
<label>Username</label> 
<input type="text" name="username"><span style="color: red;" class="error"><?php echo $nameErr;?></span><br> 
<label>E-mail</label> 
<input type="text" name="email"><span style="color: red;" class="error"><?php echo $emailErr;?></span><br> 
<label>Password</label> 
<input type="password" name="password"><span style="color: red;" class="error"><?php echo $passErr;?></span><br> 
<button type="submit" name="sub">Submit!</button> 
+0

Bu bölüm yanlşk: 'else { if (isset ($ _ POST [" sub "])) {' if lname '' 'preg_match' ise – Phiter

+0

formunu kapatırsa –

+0

@PhiterFernandes ise sonunda kapatıyorum beklenmedik başka söylüyor –

cevap

0

Öncelikle ... ben senin koduna baktığımızda ... kodunuzu girinti Size yalvarıyorum gibi olacak, sorun olup girildiğinde ne istediğim form yalnızca sunmalıdır olduğunu Gönderme mantığının kendisinin bu kapsam içinde kalmasıyla, soyadı değişkeninize bağlanır.

Şu kod lastname bloktan gönderme mantığı çıkarıp bu

if (empty($_POST["lname"])) { 
    $lnameErr = "Last Name is required"; 
} 
else { 
    $lname = ($_POST["lname"]); 
    if (!preg_match("/^[a-zA-Z]{3,30}$/",$lname)) { 
    $lnameErr = "3 to 30 characters, aplphabets only"; 
    } 
} 

if(empty($lnameErr) && empty($otherError) && empty($anotherError)) 
{ 
    //Move Submission logic here 
} 
else { 
    //Display errors 
} 

Yeni kodunuz bu

<?php 
include'connect.php'; 
require_once './config.php'; 
// define variables and set to empty values 
$nameErr = $emailErr = $lnameErr = $fnameErr = $passErr = ""; 
$name = $email = $lname = $fname = $pass = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["username"])) { 
    $nameErr = "Username is required"; 
    } 
    else { 
    $name = ($_POST["username"]); 
    if (!preg_match("/^[a-zA-Z][a-zA-Z0-9-_\.]{5,30}$/",$name)) { 
     $nameErr = "6 to 30 characters,alphanumeric, underscore & dots only"; 
    } 
    } 

    if (empty($_POST["email"])) { 
    $emailErr = "Email is required"; 
    } 
    else { 
    $email = ($_POST["email"]); 
    // check if e-mail address is well-formed 
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    $emailErr = "Invalid email address"; 
    } 
    } 
    if (empty($_POST["password"])) { 
    $passErr = "Password is required"; 
    } 
    else { 
    $pass = ($_POST["password"]); 
    if (!preg_match("/(?=^.{8,30}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/",$pass)) { 
    $passErr = "Alphanumeric, Upper & Lower Case & Special Charcters required"; 
    } 
    } 

    if (empty($_POST["fname"])) { 
    $fnameErr = "First Name is required"; 
    } 
    else { 
    $fname = ($_POST["fname"]); 
    if (!preg_match("/^[a-zA-Z]{3,30}$/",$fname)) { 
    $fnameErr = "3 to 30 characters, aplphabets only"; 
    } 
    } 

    if (empty($_POST["lname"])) { 
    $lnameErr = "Last Name is required"; 
    } 
    else { 
    $lname = ($_POST["lname"]); 
    if (!preg_match("/^[a-zA-Z]{3,30}$/",$lname)) { 
     $lnameErr = "3 to 30 characters, aplphabets only"; 
    } 
    } 

    if(empty($lnameErr) && empty($otherError) && empty($anotherError) && isset($_POST["sub"])) 
    { 
     //Move Submission logic here 
     $fname = trim($_POST["fname"]); 
     $lname = trim($_POST["lname"]); 
     $name = trim($_POST["username"]); 
     $pass = trim($_POST["password"]); 
     $email = trim($_POST["email"]); 
     $sql = "SELECT COUNT(*) AS count from users where email = :email_id or username = :username_id "; 
     try { 
     $stmt = $DB->prepare($sql); 
     $stmt->bindValue(":email_id", $email); 
     $stmt->bindValue(":username_id", $name); 
     $stmt->execute(); 
     $result = $stmt->fetchAll(); 

     if ($result[0]["count"] > 0) { 
      echo"<div>E-mail or Username Already Registered</div>"; 
     } else { 
      $sql = "INSERT INTO `users` (`username`, `password`, `email`, `firstname`, `lastname`) VALUES " . "(:name, :pass, :email, :fname, :lname)"; 
      $stmt = $DB->prepare($sql); 
      $stmt->bindValue(":fname", $fname); 
      $stmt->bindValue(":lname", $lname); 
      $stmt->bindValue(":name", $name); 
      $stmt->bindValue(":pass", md5($pass)); 
      $stmt->bindValue(":email", $email); 
      $stmt->execute(); 
      $result = $stmt->rowCount(); 

      if ($result > 0) { 
       require_once "PHPMailerAutoload.php";  
       $lastID = $DB->lastInsertId(); 
       $message = '<html><head> 
       <title>Message</title> 
       </head> 
       <body>'; 
       $message .= '<p>Hello!</p>'; 

       $message .= "</body></html>"; 


       // php mailer code starts 
       $mail = new PHPMailer(true); 
       $mail->IsSMTP(); // telling the class to use SMTP 
       $mail->SMTPDebug = 0;      // enables SMTP debug information (for testing) 
       $mail->SMTPAuth = true;     // enable SMTP authentication 
       $mail->SMTPSecure = "tls";     // sets the prefix to the servier 
       $mail->Host = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
       $mail->Port = 587;     // set the SMTP port for the GMAIL server 
       $mail->Username = '[email protected]'; 
       $mail->Password = 'Password'; 
       $mail->SetFrom('[email protected]', 'Name'); 
       $mail->AddAddress($email); 
       $mail->Subject = trim("Verification"); 
       $mail->MsgHTML($message); 

       try { 
       $mail->send(); 
       header('Location: welcome.php'); 
       } 
       catch (Exception $ex) { 
       $msg = $ex->getMessage(); 
       $msgType = "warning"; 
       } 
      } 
      else { 
       $msg = "Failed to create User"; 
       $msgType = "warning"; 
      } 
      } 
     } catch (Exception $ex) { 
      echo $ex->getMessage(); 
     } 
    } 
    else { 
    //Display errors 
    } 

} 
?> 


<form id="defaultForm" action="html.php" method="post"> 
<label>First Name</label> 
<input type="text" name="fname"><span style="color: red;" class="error"><?php echo $fnameErr;?></span><br> 
<label>Last Name</label> 
<input type="text" name="lname"><span style="color: red;" class="error"><?php echo $lnameErr;?></span><br> 
<label>Username</label> 
<input type="text" name="username"><span style="color: red;" class="error"><?php echo $nameErr;?></span><br> 
<label>E-mail</label> 
<input type="text" name="email"><span style="color: red;" class="error"><?php echo $emailErr;?></span><br> 
<label>Password</label> 
<input type="password" name="password"><span style="color: red;" class="error"><?php echo $passErr;?></span><br> 
<button type="submit" name="sub">Submit!</button> 

gibi görünmelidir deneyin bu

if (empty($_POST["lname"])) { 
    $lnameErr = "Last Name is required"; 
} 
else { 
    $lname = ($_POST["lname"]); 
    if (!preg_match("/^[a-zA-Z]{3,30}$/",$lname)) { 
    $lnameErr = "3 to 30 characters, aplphabets only"; 
    } 
    else{ 
    if (isset($_POST["sub"])) { 
    //Submission logic here 
    } 
    } 
} 

benziyor Umarım bu yardımcı olur ...

+0

beklenmedik diyor && gönderim mantığını taşıdığım zaman –

+0

Eğer açıkça bakarsanız, sadece gönderme mantığını hareket ettirmedim, ben de buna göre yapılandırdım ... Tamamen göndereceğim @MahimParsai – AceKYD

+0

görmek için biraz düzenlenmiş kodu şimdi çalışıyor ... teşekkürler .... –