Wie-o-wie php-programmeur

Status
Niet open voor verdere reacties.

Jaspertjeh

Gebruiker
Lid geworden
30 dec 2010
Berichten
765
Beste HM'ers,

Ik ben op dit moment bezig met een website te maken voor een plaatselijke vereniging. Deze website bevat een login-gedeelte. Nu ben ik de afgelopen dagen druk met voorbeelden van het internet aan het programmeren geslagen. Zonder succes. Er zit denk ik ergens een fout in mijn code die ik niet weet te vinden. Mijn vraag is dus hierbij; waarom word ik na het invullen van alle tekstvelden telkens doorgelinkt naar de "error-1.php" pagina? Ergens gaat het dus fout. Wie-o-wie kan de fout ontdekken? :shocked: Mijn dank is groot.

gr,
Jasper

PHP:
<?php



include ('database_connectie.php');
if (isset($_POST['formulier'])) {
    $error = array();//Declare An Array to store any error message  
    if (empty($_POST['voornaam'])) {//if no name has been supplied 
         header('Location: /error-1.php');
  exit; //add to array "error"
    } else {
        $name = $_POST['voornaam'];//else assign it a variable
    }
	
	if (empty($_POST['achternaam'])) {//if no name has been supplied 
         header('Location: /error-1.php');
  exit; //add to array "error"
    } else {
        $name = $_POST['achternaam'];//else assign it a variable
    }

    if (empty($_POST['email'])) {
        header('Location: /error-1.php');
  exit;
    } else {


        if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['e-mail'])) {
           //regular expression for email validation
            $Email = $_POST['email'];
        } else {
            header('Location: /error-1.php');
  exit;
        }


    }
    if (empty($_POST['wachtwoord'])) {
        header('Location: /error-1.php');
  exit;
    } else {
        $Password = $_POST['wachtwoord'];
    }


    if (empty($error)) //send to Database if there's no error '

    { // If everything's OK...

        // Make sure the email address is available:
        $query_verify_email = "SELECT * FROM gebruikers  WHERE email ='$email'";
        $result_verify_email = mysqli_query($dbc, $query_verify_email);
        if (!$result_verify_email) {//if the Query Failed ,similar to if($result_verify_email==false)
            echo ' Database Error Occured ';
        }

        if (mysqli_num_rows($result_verify_email) == 0) { // IF no previous user is using this email .


            // Create a unique  activation code:
            $activation = md5(uniqid(rand(), true));


            $query_insert_user = "INSERT INTO `gebruikers` ( `voornaam`, `achternaam`,`email`, `wachtwoord`, `activatie`) VALUES ( '$voornaam', '$achternaam','$email', '$wachtwoord', '$activatie')";


            $result_insert_user = mysqli_query($dbc, $query_insert_user);
            if (!$result_insert_user) {
                echo 'Query Failed ';
            }

            if (mysqli_affected_rows($dbc) == 1) { //If the Insert Query was successfull.


                // Send the email:
                $message = " To activate your account, please click on this link:\n\n";
                $message .= WEBSITE_URL . '/activate.php?email=' . urlencode($email) . "&key=$activation";
                mail($email, 'Registration Confirmation', $message, 'From: ismaakeel@gmail.com');

                // Flush the buffered output.


                // Finish the page:
                echo header("Location: http://example.com/thankyou.php");
die();;


            } else { // If it did not run OK.
                echo '<div class="errormsgbox">You could not be registered due to a system
error. We apologize for any
inconvenience.</div>';
            }

        } else { // The email address is not available.
            echo '<div class="errormsgbox" >That email
address has already been registered.
</div>';
        }

    } else {//If the "error" array contains error msg , display them
        
        

echo '<div class="errormsgbox"> <ol>';
        foreach ($error as $key => $values) {
            
            echo '	<li>'.$values.'</li>';


       
        }
        echo '</ol></div>';

    }
  
    mysqli_close($dbc);//Close the DB Connection

} // End of the main Submit conditional.



?>

PHP:
<form action="index.php" method="post" class="formulier">
  <fieldset>
    <div class="elements">
      <label for="voornaam">Voornaam:</label>
      <input type="text" id="voornaam" name="voornaam" size="25" />
      </div>
    <div class="elements">
      <label for="achternaam">Achternaam:</label>
      <input type="text" id="achternaam" name="achternaam" size="25" />
      </div>
    <div class="elements">
      <label for="email">E-mail:</label>
      <input type="text" id="email" name="email" size="25" />
    </div>
    <div class="elements">
      <label for="wachtwoord">Wachtwoord:</label>
      <input type="password" id="wachtwoord" name="wachtwoord" size="25" />
    </div>
    <div class="submit">
     <input type="hidden" name="formulier" value="TRUE" />
      <input type="submit" value="Registreren" />
    </div>
  </fieldset>
</form>
 
je fout zit in:

preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['e-mail'])
met test mail: test@test.com
en ook: mijnhotmail@hotmail.com

maar zelf ben ik niet echt goed in regex.

ik gebruik meestal:
Code:
if(filter_var($_POST['e-mail'],FILTER_VALIDATE_EMAIL) === false)
{
   echo 'Email is not valid';
}

als je echt regex wil:
Code:
'/^([a-z0-9]+([_\.\-]{1}[a-z0-9]+)*){1}([@]){1}([a-z0-9]+([_\-]{1}[a-z0-9]+)*)+(([\.]{1}[a-z]{2,6}){0,3}){1}$/i'

[Ik heb bij het debuggen bij elke verwijzing naar error_...php een andere nummer gezet,
zo wist ik waar je fout zat] <- debugging ;)

gr,
Maxim
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan