Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

conflict tussen sql database en automatische mailbevestiging

marientje
3 antwoorden
  • Dag allemaal.

    Misschien kan iemand me helpen bij het volgende.
    Ik heb een formulier gemaakt waarmee mensen zich kunnen registreren op een website. De gegevens worden opgeslagen in een mysql database. Dit werkt uitstekend.

    Ik wil echter graag dat degenen die zich registreren automatisch een e-mail bevestiging ontvangen. Ik heb ooit al eens zoiets gemaakt en ben nu bezig deze code te integreren in mijn formuliercode. Maar hier loop ik vast.

    Ik weet niet zoveel van php (ben nog steeds aan het leren), maar misschien ziet een van jullie waar in mijn code een fout zit.

    [code:1:bf4ef79aea]
    <?php
    include("data/connection.php");
    if(!empty($_POST)){
    $voornaam = $_POST['voornaam'];
    $achternaam = $_POST['achternaam'];
    $schooltype = $_POST['schooltype'];
    $jaar = $_POST['jaar'];
    $email = $_POST['email'];
    $gebruikersnaam = $_POST['gebruikersnaam'];
    $wachtwoord = $_POST['wachtwoord'];
    $message = "";

    $message = $message . "–
    Deze e-mail is automatisch gegenereerd.";
    $message = stripslashes($message);

    $subject = "Registratie";
    $headers = "From: " . $_POST['Email'] . "
    " . "Return-Path: " . $_POST['Email'] . "
    " . "Reply-To: " . $_POST['Email'] . "
    ";


    $sql_query = "SELECT * FROM users WHERE gebruikersnaam='".$gebruikersnaam."' OR email='".$email."';";
    $result = mysql_query($sql_query);

    if(mysql_num_rows($result) > 0) {
    header ("Location: error.php");
    }

    else{
    $sql_query = "INSERT INTO users (voornaam, achternaam, schooltype, jaar, email, gebruikersnaam, wachtwoord) ";
    $sql_query .="VALUES ('".$voornaam."', '".$achternaam."', '".$schooltype."', '".$jaar."', '".$email."', '".$gebruikersnaam."', '".$wachtwoord."');";
    $result = mysql_query($sql_query) or die(mysql_error());


    if ($_SERVER['REQUEST_METHOD'] != "POST"){exit;}

    while(list($key,$value) = each($_POST)){if(!(empty($value))){$set=1;}$message = $message . "$key: $value

    ";} if($set!==1){header("Location: register_2.php");exit;}

    mail($email,$subject,$message,$headers);

    }
    }
    ?>
    [/code:1:bf4ef79aea]

    Ter informatie:
    Het bestand dat ge-include wordt, bevat alleen de gegevens van de database (host, password etc.). Ik controleer of alle velden zijn ingevuld met een stukje javascript (heb ik niet gepost, want werkt goed). In de query heb ik aangegeven dat het formulier niet verwerkt mag worden als de gebruikersnaam of de email al voorkomen in de database. Dit doet ie ook goed. Als foutmelding wordt dan error.php geladen.

    Ik hoop dat iemand me kan helpen. Alvast bedankt.

    Groeten,
    Rob
  • Misschien kan je even vermelden wat er precies fout gaat of niet lukt.

    Overigens kan je met PHP ook controleren of alle velden zijn ingevuld. Dat kan tegelijkertijd met t ophalen van de gegevens uit de $_POST varaiabele. Misschien dat dat t iets gemakkelijker maakt.
    Ook kan je
    $sql_query = "SELECT * FROM users WHERE gebruikersnaam='".$gebruikersnaam."' OR email='".$email."';";
    volgens mij inkorten tot
    $sql_query = "SELECT * FROM users WHERE gebruikersnaam='$gebruikersnaam' OR email='$email';";

    (weet t niet helemaal cker, maar dit maakt de code wat overzichtelijker, vind ik dan)
  • Het volgende lukt in ieder geval:
    - ingevoerde gegevens in de database plaatsen
    - controleren of gebruikersnaam of email al in de database staat

    vervolgens blijft de pagina laden (onderin beeld), maar er gebeurt niets. Ook de vervolgpagina (register_2.php) wordt niet getoond.

    Ik denk dus dat het script ergens blijft hangen.

    Rob

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.