Avatar billede enur Nybegynder
07. maj 2006 - 02:32 Der er 13 kommentarer og
1 løsning

syntax error, unexpected $end

Er rimelig ny i PHP, men jeg er i gang med at lave mit eget lille login system, og tror efterhånden jeg har fået elimineret de værste fejl, men der er dog en der bliver ved med at irritere mig...
Og nu er jeg så nået til det punkt hvor jeg nærmeste har opgivet at finde den selv... det drejer sig om en syntax error, unexpected $end i den allernederste linie i nedenstående kode...
Jeg ville sætte stor pris på hvis nogle gad hjælpe mig... Da det sikkert bare er et eller andet banalt jeg har overset...

Koden er som følger:

<?php
include_once('db_con.inc');

$encstr = '123321';

function user_register()
{
    global $encstr;
   
    if(strlen($_POST['user_name']) <=25 && strlen($_POST['password1'])<=25 && ($_POST['password1'] == $_POST['password2']) && strlen($_POST['email']) < 50 && validate_email($_POST['email']))
    {
          //Validere Username og Password
          if (account_namevalid($_POST['user_name'])|| str($_POST['password1'] >= 6 ))
          {
            $user_name = strtolower($_POST['user_name']);
            $user_name = trim($user_name);
            $email = $_POST['email'];
            //Tillad ikke dubletter.
           
            $query = "SELECT user_id
                      FROM user
                      WHERE user_name = '$user_name'
                      AND email = '$email'";
            $result = mysql_query($query);
           
            if ($result && mysql_num_rows($result) > 0)
            {
              $feedback = 'FEJL! - Username eller Password eksistere allerede.';
             
              return $feedback;
            }
           
            else
            {
              $first_name = $_POST['first_name'];
              $last_name = $_POST['last_name'];
              $password = md5($_POST['password1']);
              $userip = $_SERVER['REMOTE_ADDR'];
             
              //Opret nyt Hash til indsættelse i databasen og bekraftigelses emailen.
             
              $hash = md5($email.encstr);
             
              $query = "INSERT INTO users (user_name, fornavn, efternavn, password, email, remote_addr, confirm_hash, is_confirmed, date_created)
              VALUES ('$user_name', '$first_name', '$last_name','$password','$email','$user_ip','$hash','0', NOW())";
              $result = mysql_query($query);
              if(!$result)
              {
                  $feedback = 'FEJL! - Database fejl!';
                return $feedback; 
              }             
              else
              {
                  //Send bekraftigelses email.
                $encoded_email = urlencode($_POST['email']);
                $mail_body = <<< EOMAILBODY
                Tak fordi du valgte at registrere dig her.
                Klik på linket for at bekræfte din registrering:
                http://localhost/PHP/eks/confirm.php?hash=$hash&email=$encoded_email
                Når du har set et bekræftigelsesvindue, vil du blive logget ind på
                siden. 
                EOMAILBODY;
                mail($email, 'Registration Bekraftigelse', $mail_body, 'From: noreply@eks.dk');
               
                //Give a succesful registration messeage
                $feedback = 'Du har registreret med succes. Du vil snart modtage en bekraftigelses email';
                return $feedback;
              }
            }
        }
        else {
                  $feedback = 'FEJL! - Username eller password er ugyldigt!';
                  return $feedback;
            }
    }
    else{
          $feedback = 'FEJL! - Vær venlig at udfylde alle felterne korrekt!';
        return $feedback; 
        } 
}

function account_namevalid()
{
  // Der skal være mindst en karakter
  if(strspn(bekræftigelses_POST['user_name'], "abcdefghijlkmnopqrstuvwxyzæøåABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ1234567890-_") !=strlen($name))
{
  return = false;
}

// min og max længde

if(strlen($_POST[user_name]) <5)
{
  return false;
}

if(strlen($_POST[user_name])>25)
{
  return false;
}

//"Ulovlige" navne

if (eregi('^((root)|(bin)|(daemon)|(adm)|(lp)|(sync)|(shutdown)|(halt)|(mail)|(news)|(uucp)|(operator)|(games)|(mysql)|(httpd)|(nobody)|(dummy)|(www)|(cvs)|(shell)|(ftp)|(irc)|(debian)|(ns)|(download)|(ingen)|(ingenting))$',$_POST[user_name]))
{
return false;
}

if(ergi("^(anoncvs_)", $_POST[user_name]))
{
  return false;
}
return true;
}

function validate_email()
{
  return (ereg('^[-!#$%\'*+\\./0-9=?A-Å^_`a-å{|}~]+'.'@'. '[-!#$%\'*+\\./0-9=?A-Å^_`a-å{|}~]+\.' . '[-!#$%\'*+\\./0-9=?A-Å^_`a-å{|}~]'));
}

function user_confirm()
{
  //Denne funktion vil kun virke med superglobale arrys, da jeg ikke passer eller deklerer nogle globals
 
  global $encstr;
 
  //Tjek at der ikke er blevet pillet ved emailadressen.
 
  $new_hash = md5($_GET[email].$encstr);
 
  if($new_hash && ($new_hash == $_GET ['hash']))
  {
      $query = "SELECT user_name FROM users WHERE confirm_hash = '$new_hash'";
      $result = mysql_query($query);
     
      if(!$result || mysql_num_rows($result) < 1)
      {
        $feedback = 'FEJL! - Hash ikke fundet.';
        return $feedback;
    }
    else
    {
      //Bekraft emailadressen og aktivere kontoen.
     
      $email = $_GET[email];
      $hash = $_GET[hash];
      $query = "UPDATE users SET email='$email', is_confirmed='1' WHERE confirm_hash='$hash'";
      $result = mysql_query($query);
      return 1;
    }
  }
  else
  {
      $feedback = 'FEJL! - Værdierne stemmer ikke overens!';
      return $feedback;
  }
}
?>
Avatar billede enur Nybegynder
07. maj 2006 - 02:34 #1
ved ikke om det er nogen hjælp, men kan da lige nævne at der står det er en Parser error...
Avatar billede Six Nybegynder
07. maj 2006 - 02:36 #2
if(ergi("^(anoncvs_)", $_POST[user_name]))
{
  return false;
} else {
return true;
}
Avatar billede Six Nybegynder
07. maj 2006 - 02:37 #3
prøv lige at kopiere fejlen her ind
Avatar billede enur Nybegynder
07. maj 2006 - 02:46 #4
Parse error: syntax error, unexpected $end in C:\... on line 159 (Den sidste)
Avatar billede enur Nybegynder
07. maj 2006 - 02:48 #5
Har prøvet det nu, men det havde ingen effekt, den skriver stadig bare det ovenstående...
Avatar billede sn0wflake Nybegynder
07. maj 2006 - 09:02 #6
Hvilket format er PHP-filerne gemt i?
Avatar billede erikjacobsen Ekspert
07. maj 2006 - 09:10 #7
Din   
        EOMAILBODY;
skal stå allerforrest på linien - ingen mellemrum før. Derefter kommer der vist andre fejl :)
Avatar billede enur Nybegynder
09. maj 2006 - 11:51 #8
hmmm... nu brokker den sig mærkeligt nok ikke mere... nu bliver det hele bare udskrevet på skærmen... :S og ikke passet hmm... nogen der kan se hvad det kan skyldes?
Avatar billede erikjacobsen Ekspert
09. maj 2006 - 12:11 #9
Hedder din fil stadig .php til sidst? Og ser du på filen via en webserver, dvs: http://...noget.... ?
Avatar billede enur Nybegynder
09. maj 2006 - 12:40 #10
nej det er .inc og ja jeg parser den på et websted, og på min localhost... det er det samme der sker, den udskriver bare teksten på skærmen istedet for at inkludere den der hvor det var menningen at den skulle...
Avatar billede erikjacobsen Ekspert
09. maj 2006 - 13:24 #11
Du skal ikke kalde filen for noget.inc - det har ikke noget med PHP at gøre. Kald den evt. noget.inc.php
Avatar billede enur Nybegynder
09. maj 2006 - 14:37 #12
hmm... nu har jeg modificeret koden lidt og kaldt den .php som anbefalet...
Den ser nu sådan her ud, og fejlen er igen unexpected $end;
Er der nogen der har en andelse om hvorfor det kunne være den siger det...??
<?php
include_once('db_con.inc');

$encstr = "123";

function user_register()
{
    global $encstr;
   
    if(    strlen($_POST['user_name']) <= 25 &&
        strlen($_POST['password1']) <= 25 &&
        ($_POST['password1'] == $_POST['password2']) &&
        strlen($_POST['email']) < 50 &&
        validate_email($_POST['email']))
    {
          //Validere Username og Password
          if (account_namevalid($_POST['user_name']) ||
              strlen($_POST['password1'] >= 6))
          {
            $user_name = strtolower($_POST['user_name']);
            $user_name = trim($user_name);
            $email = $_POST['email'];
            //Tillad ikke dubletter.
           
            $query = "SELECT user_id
                      FROM user
                      WHERE user_name = '$user_name'
                      AND email = '$email'";
            $result = mysql_query($query);
           
            if ($result && mysql_num_rows($result) > 0)
            {
              $feedback = 'FEJL! - Username eller Password eksistere allerede.';
             
              return $feedback;
            }
           
            else
            {
              $first_name = $_POST['first_name'];
              $last_name = $_POST['last_name'];
              $password = md5($_POST['password1']);
              $userip = $_SERVER['REMOTE_ADDR'];
             
              //Opret nyt Hash til indsættelse i databasen og bekraftigelses emailen.
             
              $hash = md5($email.encstr);
             
              $query = "INSERT INTO users (user_name, fornavn, efternavn, password, email, remote_addr, confirm_hash, is_confirmed, date_created)
              VALUES ('$user_name', '$first_name', '$last_name','$password','$email','$user_ip','$hash','0', NOW())";
              $result = mysql_query($query);
              if(!$result)
              {
                  $feedback = 'FEJL! - Database fejl!';
                return $feedback; 
              }             
              else
              {
                  //Send bekraftigelses email.
                $encoded_email = urlencode($_POST['email']);
                $mail_body = <<< EOMAILBODY
                Tak fordi du valgte at registrere dig her.
                Klik på linket for at bekræfte din registrering:
                http://localhost/PHP/eks/confirm.php?hash=$hash&email=$encoded_email
                Når du har set et bekræftigelsesvindue, vil du blive logget ind på
                siden. 
                EOMAILBODY;
                mail($email, 'Registration Bekraftigelse', $mail_body, 'From: noreply@eks.dk');
               
                //Give a succesful registration messeage
                $feedback = 'Du har registreret med succes. Du vil snart modtage en bekraftigelses email';
                return $feedback;
              }
            }
        }
        else {
                  $feedback = 'FEJL! - Username eller password er ugyldigt!';
                  return $feedback;
            }
    }
    else{
          $feedback = "FEJL! - Vær venlig at udfylde alle felterne korrekt!";
        return $feedback; 
        } 
}

function account_namevalid()
{
  // Der skal være mindst en karakter
  if(strspn(bekræftigelses_POST['user_name'], "abcdefghijlkmnopqrstuvwxyzæøåABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ1234567890-_") !=strlen($name))
{
  return = false;
}

// min og max længde
if(isset($_POST[submit]))
{
    if (strlen($_POST[user_name]) < 5)
    {
      return false;
    }

    if (strlen($_POST[user_name]) > 25)
    {
      return false;
    }
}
else
{
  return "HEJ!"
}

//"Ulovlige" navne
if(isset($_POST[submit]))
{
    if (eregi("^((root)|(bin)|(daemon)|(adm)|(lp)|(sync)|(shutdown)|(halt)|(mail)|(news)|(uucp)|(operator)|(games)|(mysql)|(httpd)|(nobody)|(dummy)|(www)|(cvs)|(shell)|(ftp)|(irc)|(debian)|(ns)|(download)|(ingen)|(ingenting))$",$_POST[user_name]))
    {
    return false;
    }
}
if(isset($_POST[submit]))
{
    if(ergi("^(anoncvs_)", $_POST[user_name]))
    {
      return false;
    }
    return true;
}
}
function validate_email()
{
  return (ereg('^[-!#$%\'*+\\./0-9=?A-Å^_`a-å{|}~]+'.'@'. '[-!#$%\'*+\\./0-9=?A-Å^_`a-å{|}~]+\.' . '[-!#$%\'*+\\./0-9=?A-Å^_`a-å{|}~]'));
}

function user_confirm()
{
  //Denne funktion vil kun virke med superglobale arrys, da jeg ikke passer eller deklerer nogle globals
 
  global $encstr;
 
  //Tjek at der ikke er blevet pillet ved emailadressen.
if(isset($_POST[submit]))

  $new_hash = md5($_GET[email].$encstr);

  if($new_hash && ($new_hash == $_GET ['hash']))
  {
      $query = "SELECT user_name FROM users WHERE confirm_hash = '$new_hash'";
      $result = mysql_query($query);
     
      if(!$result || mysql_num_rows($result) < 1)
      {
        $feedback = 'FEJL! - Hash ikke fundet.'
        return $feedback;
    }
    else
    {
      //Bekraft emailadressen og aktivere kontoen.
      if(isset($_POST[submit]))
        {
          $email = $_GET[email];
          $hash = $_GET[hash];
          $query = "UPDATE users SET email='$email', is_confirmed='1' WHERE confirm_hash='$hash'";
          $result = mysql_query($query);
          return 1;
        }
    }
  }
  else
  {
      $feedback = 'FEJL! - Værdierne stemmer ikke overens!';
      return $feedback;
  }
}
?>
Avatar billede erikjacobsen Ekspert
09. maj 2006 - 14:54 #13
Kommentar: erikjacobsen 07/05-2006 09:10:49
Avatar billede enur Nybegynder
19. maj 2006 - 09:40 #14
har fundet en løsning... så lukker denne tråd igen...
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