Avatar billede TumseMM Nybegynder
26. oktober 2011 - 20:25 Der er 4 kommentarer

Register system med php og email confirmation fejl

Hej eksperten :)

Har et login system som fungerede perfekt indtil jeg fik den idé, at jeg ville have e-mail confirmation, som jeg ikke kan få til at fungere .. :(

Jeg har virkelig brug for hjælp med det her, da jeg ikke er helt skarp i php endnu.

Koden:


<?php

$submit= $_POST['register'];
if($submit=="Registrer")
{
    include('connect.php');
    $username = mysql_real_escape_string(strip_tags(htmlspecialchars($_POST['username'])));
    $password1 = md5($_POST['password1']);
    $pw1 = $_POST['password1'];
    $pw2 = $_POST['password2'];
    $email = $_POST['email'];
    $key = mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand();
    $error=0;

    if(strlen($_POST['password1']) < 4)
    {
    echo '<p style="color:red";>'."Passwordet skal indeholde mindst 4 tegn..".'</p>';
    $error=1;
    }
    if($pw1 != $pw2)
    {
    echo '<p style="color:red";>'."De 2 kodeord er ikke ens!".'</p>';
    $error=1;
    }
    if($pw1 == "")
    {
      echo '<p style="color:red";>'."Du har ikke indtastet et kodeord!".'</p>';
    $error=1;
    }
      if(strlen($username = mysql_real_escape_string(strip_tags(htmlspecialchars($_POST['username'])))) < 3)
    {
    echo '<p style="color:red";>'."Brugernavnet skal indeholde mindst 3 tegn..".'</p>';;
    $error=1;
    }
    if($username == "")
    {
      echo '<p style="color:red";>'."Du har ikke indtastet et brugernavn!".'</p>';
    $error=1;
    }
    if(!preg_match("/^[a-åA-Å0-9_]+@[a-åA-Å0-9\-]+\.[a-åA-Å0-9\-\]+$]/", $email))
    {
    echo '<p style="color:red";>'."Din E-mail er forkert!".'</p>';
    $error=1;
    }   

    $sql = "SELECT id FROM users WHERE username LIKE '".$username."'";
    $rs  = mysql_query($sql);
    if($rs)
    {
        if (mysql_num_rows($rs) == 1)
        {   
            echo  '<p style="color:red";>'."Brugernavnet er optaget!".'</p>';
            $error=1;
        }   
    }
   
    if(!$error)
    { 
        $sql="INSERT INTO `users` (`username`,`password`,`email`,'key','status') VALUES ('".$username."','".$password1."','".$email."','".$key."','verify')";
        mysql_query($sql) or die(mysql_error());
        echo '<b style="color:blue";>'."Du er nu klar! Log ind ovenover!".'</b>';
       
        echo'en mail er sendt til '.$_POST['email'].'';
   
        $to = $_POST['email'];

        $subject = "hjemmeside Registrering";

        $message = "Velkommen til min hjemmeside!\r\rFor at oprette dig som bruger, skal du bare trykke på dette link: http://localhost/webalizer/Website.php$key";

        $headers = 'Fra: noreply@minhjemmeside' . "\r\n" .

            'Svar: noreply@minhjemmeside' . "\r\n" .

            'X-Mailer: PHP/' . phpversion();

        mail($to, $subject, $message, $headers);   
      }
else
{
    $queryString = $_SERVER['QUERY_STRING'];

    $query = "SELECT * FROM users";

    $result = mysql_query($query) or die(mysql_error());

      while($row = mysql_fetch_array($result)){

        if ($queryString == $row["key"]){
        echo'tillykke du er oprettet som bruger! :)';
        $sql="UPDATE users SET key = '', status='activated' WHERE (id = $row[id])";
    }
       
    }   
    }
}


?>



Den laver en hvid side, hvor der kun er login formen og denne error:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''key','status') VALUES ('jisijsdijasd','ad7f8a01b9939ef96f3afa4ffa0bbb26','ajsid' at line 1"

Sætter pris på alt form for hjælp!! :)
Avatar billede claes57 Ekspert
26. oktober 2011 - 20:47 #1
dte må så være linjen
$sql="INSERT INTO `users` (`username`,`password`,`email`,'key','status') VALUES ('".$username."','".$password1."','".$email."','".$key."','verify')";

er der ordet 'verify' der skal sættes ind i feltet 'status'?
og du har et felt, der hedder status?
Avatar billede olsensweb.dk Ekspert
26. oktober 2011 - 21:34 #2
du har stadig ikke fjernet den ekstra ] i slutningen af stringen som olebole skriver i http://www.eksperten.dk/spm/949932 #3
nb er du sikker på email addresse må indeholde æøå ??

ret
if(!preg_match("/^[a-åA-Å0-9_]+@[a-åA-Å0-9\-]+\.[a-åA-Å0-9\-\]+$]/", $email))

til (utested)
if(!preg_match("/^[a-zæøåÆØÅ0-9_]+@[a-zæøåÆØÅ0-9\-]+\.[a-zæøåÆØÅ0-9\-\]+$/i", $email))


jeg ville anvende regulære udtruk jeg anvender i http://www.eksperten.dk/spm/949932 #9
if(!preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i", $email))
Avatar billede TumseMM Nybegynder
20. november 2011 - 22:10 #3
ja har et felt der hedder status, og har rettet ronols :) tak tak
Avatar billede claes57 Ekspert
21. november 2011 - 08:49 #4
og du får samme fejl?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester