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

时间:2018-03-28 11:30:54

标签: php

我几乎可以使用我的代码,但我更喜欢使用我的用户类 但是在我的registration.php文件中实现$ user = new User()时,它 不行。到目前为止我有以下代码。这只是代码的一部分..

<?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);
}

我希望这些代码足够,但很乐意提供更多代码......

包含激活链接时,我也遇到以下错误        HTTP://

  

解析错误:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE),           期待标识符(T_STRING)或变量(T_VARIABLE)或数字           第17行的C:\ xampp \ htdocs \ pianocourse101 \ register.php中的(T_NUM_STRING)

但是,我更喜欢像$ user-&gt; data() - &gt; username
这样的东西 但我不知道该如何去做。我设法在我的profile.php中做到这一点,但由于某些原因,当我在这里尝试它时,它说了一些非对象错误..我不确定非对象意味着什么,但我包括$ user = new User() ;应该工作的线...我是php的新手,想要一个简单的一步一步的解释

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 个答案:

答案 0 :(得分:3)

你的Heredoc格式并不好。 close元素不能缩进:

    $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

来自documentation

  

非常重要的是要注意,带有结束标识符的行必须不包含除分号(;)之外的其他字符。这尤其意味着标识符可能没有缩进,并且在分号之前或之后可能没有任何空格或制表符。同样重要的是要认识到结束标识符之前的第一个字符必须是本地操作系统定义的换行符。这是在UNIX系统上的\ n,包括Mac OS X.结束分隔符后面还必须跟一个换行符。