trim()期望参数1为字符串,对象为

时间:2016-03-11 15:42:03

标签: php

我正在开发一个网站,我曾经发邮件确认题词。我有3页,第三页包含函数envoi()发送邮件。 但它告诉我这个错误。      警告:trim()期望参数1为字符串,对象在第849行的C:\ Program Files(x86)\ EasyPHP-DevServer-14.1VC9 \ phpmailer \ class.phpmailer.php中给出

inscription.php:

 <div id="admin" style="float:right;clear:right;width:650px; height:515px;     border-radius:30px 30px 30px 30px; border:solid 3px black;margin-right:10px;">
 <p style="float:left;"><img src="..\ETT\img\admin.png" alt="admin"     width="40" height="40" style="margin:10px 30px; border-radius:     50%;float:right;"></p>
  <p style="padding:7px;"><h4>Admin</h4></p>
  <form action="validepageone.php" method="post" style="padding-left: 130px;"    enctype="multipart/form-data" >
             <label for="firstname" style="color:red;">first_name *</label>
            <input  id="firstname" name="firstname" type="text" />
            <label for="lastname" style="color:red;">last_name *</label>
            <input id="lastname" name="lastname" type="text" />
            <label for="mail" style="color:red;">mail *</label>
            <input id="mail" name="mail" type="text" />

            <label for="mobile" style="color:red;">mobile *</label>
            <input id="mobile" name="mobile" type="text" />

            <label for="adresse" style="color:red;">adress *</label>
            <input id="adresse" name="adresse" type="text" />
            <label for="password" style="color:red;">password *</label>
            <input id="password" name="password" type="text" /></br>
           <input type="submit" value="submit" name="admin" style="margin-       left:70px;margin-top:20px;"> 
  </form>

  </div>

valideinscription.php:

   <?php
   require "connexion.php";
   require 'traitement.php';
   if(isset($_POST['admin'])){
   if( isset($_POST['firstname']) && isset($_POST['lastname']) &&      isset($_POST['mail']) && isset($_POST['mobile']) && isset($_POST['adresse'])&&isset($_POST['password'])){
    $a=$_POST['mail'];
    $b=$_POST['lastname'];
    $c=$_POST['firstname'];
    $d=$_POST['adresse'];
    $e=$_POST['mobile'];
    $f=$_POST['password'];
      $a=trim($a);
      $c=trim($c);

    echo 'bien';
    $vara=admin::existmail($a);
    if(!$vara){
    $varb=admin::addadmin($c,$a,$e,$d,$b);
    $varc=admin::adduser($a,$f);
    $vara=admin::envoi($a,$c);
    }
    else {echo 'existe';}
   }}

traitement.php:

   require_once('C:/Program Files (x86)/EasyPHP-DevServer-     14.1VC9/phpmailer/PHPMailerAutoload.php');

    public static function envoi($mail,$nom) {
    $mail = new PHPmailer(); // instanciation de celle-ci



    $mail->IsSMTP(); // activation des fonctions SMTP
    $mail->SMTPAuth = true; // on l’informe que ce SMTP nécessite une   autentification
    $mail->Host = "ssl://smtp.gmail.com"; // définition de l’adresse du   serveur SMTP de Gmail
    $mail->Port = 465; // définition du port du serveur SMTP de Gmail
    $mail->Username = "xxxx@gmail.com"; // le nom   d’utilisateur SMTP
    $mail->Password = "xxxx"; // son mot de passe SMTP



    $mail->AddAddress($mail, $nom);

    $mail->From = "xxxxxx@gmail.com"; // adresse email   de l’expéditeur
    $mail->FromName = "xxx"; // nom de l’expéditeur


    $mail->IsHTML(true); // envoie de l’email au format HTML
    $mail->Subject = "mail de validation";
    $mail->Body = "Bonjour Mr".$nom.",</br>nous vous confirmons votre inscription,votre compte sera activé lors d'un clic sous  <a href='http://localhost/projects/ETT/activecompte.php?$nom'> ce lien</a>" ;  // le corps de texte de votre email en HTML

    if(!$mail->Send()) { // envoie de l'email
    return  'Mailer Error: ' . $mail->ErrorInfo; // affichage des erreurs,   s’il y en a
  } else { //Ouf tout va bien…
    echo 'mail passé';
}

}

2 个答案:

答案 0 :(得分:1)

$mail->AddAddress($mail, $nom);
  ^--mail object    ^--mail object AGAIN

你不能使用你用来发送邮件的$ mail邮件作为电子邮件的电子邮件地址。

这意味着:

public static function envoi($mail,$nom) {
                                ^---email address to use
$mail = new PHPmailer(); // instanciation de celle-ci
 ^---destroy email address and replace with mailer object

是真正的问题。

答案 1 :(得分:0)

只需更改方法定义:

public static function envoi( $email, $nom )

然后,在函数内部,替换这一行:

$mail->AddAddress($mail, $nom);

这一个:

$mail->AddAddress( $email, $nom );

在您的代码中,您传递的是->addAddress他们自己的对象,而不是电子邮件地址字符串。