doudui1850
doudui1850
2018-03-28 11:30

我需要一些帮助,使用php oop语法激活电子邮件

I have almost got my code to work but would prefer to use my user class but when implementing $user = new User() into my registration.php file, it won't work. I have got the following codes so far. This is only part of the code..

<?php
 require_once 'core/init.php';  // we have autoloader here


 if(isset($_POST['submit'])) {

      $random = rand();
      $name = $_POST['name'];
      $email = $_POST['email'];
      $to = 'piano0011@hotmail.com';

      $header = 'From: piano0011@hotmail.com';

      $subject = 'Email activation is required';
      $message = <<<EMAIL

      Hello $name How are you? Thank you for registering and please 
      click on the link to activate your account: 
      .http://localhost/pianocourse101/activate.php? 
      email=$_POST['email']

      EMAIL;

      mail($to, $subject, $message, $header);
}

I hope that these are enough codes but will be happy to provide more coding...

I am also getting the following errors when including the activation link http://

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\pianocourse101egister.php on line 17

However, I would prefer to do something like $user->data()->username
but I am not sure how to go about in doing this. I managed to do it in my profile.php but for some reason when I tried it here, it says something about non-object error.. I am not sure what non-object means but I included the $user = new User(); line which should work...I am new to php and would like a simple step by step explanation

if($validation->passed()) {

  $user = new User();

  $salt = Hash::salt(32);


 try {
     $user->create(array(
    'username' => Input::get('username'),
    'password' => Hash::make(Input::get('password'), $salt),
    'salt' => $salt,
    'name' => Input::get('name'),
    'joined' => date('Y-m-d H:i:s'),
    'group' => 0,
    'email' => Input::get('email'),
    'activated' => 0,
    'country' => Input::get('country'),
    'token' => Input::get('token'),
    'email_code' => Hash::make(Input::get('username', microtime()))

     ));



    Session::flash('home', 'You have been registered and can now log in!');
   // Redirect::to('index.html');


    } catch(Exception $e) {
      die($e->getMessage());
    }
 } else {
    foreach($validation->errors() as $error) {
      echo $error, '<br>';
    }
 }





<form action="" method="post" id="simpleform">
<div class ="field">      
<label for="username">Username</label>
<input type="text" name="username" id="username" value="<?php echo 
escape(Input::get('username')); ?>" autocomplete="off">
</div>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • doy57007 doy57007 3年前

    You Heredoc format is not good. The close element must not be indented:

        $message = <<<EMAIL
    
             Hello $name How are you? Thank you for registering and please 
             click on the link to activate your account: 
             .http://localhost/pianocourse101/activate.php? 
             email=$_POST['email']
    
    EMAIL; // on the first column
    

    From documentation:

    It is very important to note that the line with the closing identifier must contain no other characters, except a semicolon (;). That means especially that the identifier may not be indented, and there may not be any spaces or tabs before or after the semicolon. It's also important to realize that the first character before the closing identifier must be a newline as defined by the local operating system. This is on UNIX systems, including Mac OS X. The closing delimiter must also be followed by a newline.

    点赞 评论 复制链接分享

相关推荐