» Blog Pc-Tudo

Arquivo de †Janeiro, 2012

Adicionar utilizador ao PHPLIST através de uma página externa

Criado por Pc-Tudo em 11 Janeiro, 2012 | Sem Comentários

Código para adicionar utilizadores ao PhpList através de Scripts Externos, neste caso através de PHP.

<?php 

/* LCsub.php — 

Purpose: Remote List Control via HTTP, subscribe function 

Original Author: Rich C. 8/8/05 

Modified by: Jesse Heap 1/3/2006 

Details: 

With PHPList installed this procedure can be use to 

subscribe a user using the HTTP command.  The procedure works 

by simulating a POST to the default subscribe page.  It requires 

the CURL PHP library. 

LCsub.php — will subscribe a user 

USAGE: 

(we assuming list #1, master password is "plist") 

Command: 

http://mydomain.com/lists/LCsub.php?pwd=plist&email=johndoe%40aol.com

Result: 

This will subscribe John Doe to the email list; note that the 

‘@’ sign has been replaced here by %40 which is needed by most 

web servers. 

Command: 

http://mydomain.com/lists/LCsub.php?pwd=plist&email=johndoe@aol.com&attribute1=John&attribute2=Doe&attribute3=TX

Result: 

This will subscribe John Doe to the email list, but also add 

user data for him, namely John’s first name, last name, and 

state, which must be set up as phplist attributes for List #2 

INSTALLATION AND CONFIGURATION: 

Just copy this script to the home directory of phplist, the lists folder. 

To configure, just replace the values below for settings with the 

location of your phplist installation, and a working admin password 

for this installation. 

*/ 

// GLOBAL VARIABLES 

// CONFIGURATION SETTINGS.  Set them up for your host 

$domain = "http://www.yoursite.com/lists/"; 

$lid = 1;                                 // lid is the default PHPlist List ID to use 

$masterpassword = "yourmasterpassword";       // Master password prevents unauthorized calls to script 

$login = "admin";                       // phplist admin Login 

$pass = "yourphpplistassword";             // phplist admin password 

$skipConfirmationEmail = 1;               // Set to 0 if you require a confirmation email to be sent. 

// CODE 

//TODO: Put in check to only allow script to be called from authorized domains 

// 1) Retrieve the password parameter supplied in http request 

$pwd = $_GET[‘pwd’]; 

if ($pwd == $masterpassword) {              // make sure password matches 

echo("Master Password was correct.<br>");   //debug code, ok to remove 

// 2) if script password is correct, then retrieve other parameters 

   $ary = explode(‘&’, $_SERVER[‘QUERY_STRING’]); 

   $i = 0; 

      $post_data = array(); 

   while ($i < count($ary)) { 

      $getArray = split(‘=’, $ary[$i]);    

       // Set each GET value pair to the post_data associative array in preperation for the POST 

      if (strcasecmp(urldecode($getArray[0]),‘pwd’)!=0) { // Ignore PWD parameter – not needed for POST 

         $post_data[urldecode($getArray[0])] = urldecode($getArray[1]); 

      } 

      $i++; 

   } 

   // Ensure email is provided 

   $email = $post_data[‘email’]; 

   $tmp = $_GET[‘lid’]; 

   if ($tmp != ”) {$lid = $tmp; }   //user may override default list ID 

   if ($email == ”) { 

         echo(‘You must supply an email address’); 

    return(0); 

   } 

// 3) Login to phplist as admin and save cookie using CURLOPT_COOKIEFILE 

// NOTE: Must log in as admin in order to bypass email confirmation

   $url = $domain . "admin/?"; 

   $ch = curl_init(); 

   $login_data = array(); 

   $login_data["login"] = $login; 

   $login_data["password"] = $pass; 

   curl_setopt($ch, CURLOPT_POST, 1); 

   curl_setopt($ch, CURLOPT_URL, $url);    

   curl_setopt($ch, CURLOPT_POSTFIELDS, $login_data); 

   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

   curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/nofileneeded.txt"); //Enable Cookie Parser.  

   //File does not need to exist – http://curl.netmirror.org/libcurl/c/libcurl-tutorial.html for more info 

   $result = curl_exec ($ch); 

//   echo("Result was: $result<br>"); //debug 

// 3) Now simulate post to subscriber form.  

   $post_data["emailconfirm"] = $email; 

   $post_data["htmlemail"] = "1"; 

   $post_data["list[$lid]"] = "signup"; 

   $post_data["subscribe"] = "Subscribe"; 

   $post_data["makeconfirmed"] = $skipConfirmationEmail;  //If set to 1 it will confirm user bypassing confirmation email 

   $url = $domain . "?p=subscribe"; 

   curl_setopt($ch, CURLOPT_POST, 1); 

   curl_setopt($ch, CURLOPT_URL, $url);    

   curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 

   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

      $result = curl_exec ($ch); 

   echo("Result was: $result<br>"); 

//) Clean up 

curl_close($ch); 

}  // end of if clause 

else { 

echo("Password not supplied."); 

} 

// close the php tag 

 ?>