ListMailPRO Email Marketing Software Forums

ListMailPRO Email Marketing Software Forums => General Help & How-To => Topic started by: paulbeestonuk on March 16, 2007, 09:15:48 pm

Title: Spaces in names creating problems in links
Post by: paulbeestonuk on March 16, 2007, 09:15:48 pm
Hi,
I have a sign-up list where I ask people for their first name and email address and sometimes they enter more than one name with a space between.
Here is the problem:
In an email I send them they can subscribe to another list though a text link in the email and if their name has a space the link is broken.
Any help would be appreciated.
Paul.
Title: Spaces in names creating problems in links
Post by: DW on March 17, 2007, 03:54:45 am
Hi Paul,

This happens because ListMail message codes cannot currently "urlencode" spaces and other special characters for use in URLs.

What you can do is use the users' unique ID and a small custom script to sign the user up to the desired lists.

1. Set up a message code of the type "Users Unique ID", ie "!uid".

2. In your message, use this:
http://example.com/mail/join-now.php?u=!uid

3. Create a file named join-now.php in your ListMail folder containing the following code:
Code: [Select]
<?php// place this file in your LM folder// list to subscribe to$list = '1';// end config// include LM stuffinclude('./config.php');include('./admin.php');// get LM email,fname,lname based on UID$u = $_GET['u'];if(!$u) exit('error: uid not provided');list($em,$fn,$ln)=mysql_fetch_row(mysql_query("select email,fname,lname from lm_users where uid = '".addslashes($u)."';"));if(!$em) exit('error: uid not found');// get listmail pathlist($lmp)=mysql_fetch_row(mysql_query("select listmailpath from lm_config"));// forward the user with urlencoded vars to signup.php, so custom HTML, etc. is shownheader('Location: '.$lmp.'signup.php?email='.urlencode($em).'&fname='.urlencode($fn).'&lname='.urlencode($ln).'&list='.$list);?>

Regards
Title: Can the list number be a parameter too?
Post by: paulbeestonuk on March 17, 2007, 04:08:23 am
Thanks Dean
Could I pass in the list number as a parameter too?
Cheers,
Paul.
Title: Spaces in names creating problems in links
Post by: DW on March 17, 2007, 05:01:57 pm
Paul,

Probably, yes.  Simply remove
Code: [Select]
$list = '1';
and use a link:
http://example.com/mail/join-now.php?u=!uid&list=1

or shorten it further (I like to)
Code: [Select]
$list = $l;
and use a link:
http://example.com/mail/join-now.php?u=!uid&l=1

or you could even use ModRewrite in .htaccess of your root web...
Code: [Select]
RewriteEngine On
RewriteRule ^/join/(.*)/(.*)$ /mail/join-now.php?u=$1&list=$2 [L]


and use a link like:
http://example.com/join/!uid/1

:)

Regards
Title: Nearly there - but errors
Post by: paulbeestonuk on March 17, 2007, 11:58:27 pm
Hi Dean,

Here is my modified script:
<?php
// add-to-list.php
// include LM stuff
include('./config.php');
include('./admin.php');

// get LM email,fname,lname based on UID
$u = $_GET['u'];
$list = $_GET['l'];
if(!$u) exit('error: uid not provided');
if(!$list) exit('error: list number not provided');

list($em,$fn,$ln)=mysql_fetch_row(mysql_query("select email,fname,lname from lm_users where uid = '".addslashes($u)."';"));
if(!$em) exit('error: uid not found');

// get listmail path
list($lmp)=mysql_fetch_row(mysql_query("select listmailpath from lm_config"));

// forward the user with urlencoded vars to signup.php, so custom HTML, etc. is shown
header('Location: '.$lmp.'signup.php?email='.urlencode($em).'&fname='.urlencode($fn).'&lname='.urlencode($ln));
?>

Here are the errors I am getting:
Warning: Variable passed to each() is not an array or object in /home/httpd/vhosts/mailist.co.uk/httpdocs/mail/signup.php on line 27

Warning: reset(): Passed variable is not an array or object in /home/httpd/vhosts/mailist.co.uk/httpdocs/mail/signup.php on line 63

Warning: Variable passed to each() is not an array or object in /home/httpd/vhosts/mailist.co.uk/httpdocs/mail/signup.php on line 65

Warning: reset(): Passed variable is not an array or object in /home/httpd/vhosts/mailist.co.uk/httpdocs/mail/signup.php on line 132

Warning: Variable passed to each() is not an array or object in /home/httpd/vhosts/mailist.co.uk/httpdocs/mail/signup.php on line 134
ListMail Custom HTML not found! Please contact your administrator.

Should the new list number appear somewhere in the urlencoded vars to signup.php?
Cheers,
Paul
Title: Spaces in names creating problems in links
Post by: DW on March 18, 2007, 04:45:11 am
Paul,

Yes, you're right.  Change this:
Code: [Select]
header('Location: '.$lmp.'signup.php?email='.urlencode($em).'&fname='.urlencode($fn).'&lname='.urlencode($ln));
To this:
Code: [Select]
header('Location: '.$lmp.'signup.php?email='.urlencode($em).'&fname='.urlencode($fn).'&lname='.urlencode($ln).'&list='.$list);
I have updated the original code for others.

Regards
Title: Spaces in names creating problems in links
Post by: paulbeestonuk on March 19, 2007, 01:47:14 am
Thanks Dean - it's working.
Paul.