Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

How do I make account creation optional?


riverpast

Recommended Posts

I am trying out OSCommerce for my store. When I check out, it asks me to create an account.

 

As far as I know, that's a easy way to lose customers. How do I allow the customer to check out (enter name, address, credit card number) without having an account? Of course, an account would make it easier to order in the future so it is OK to make it optional, but it has to be optional.

 

Thanks in advance.

 

John Huang

Link to comment
Share on other sites

Well, the important thing to keep in mind here is that if you are shipping something to the customer, then you still have to collect the customer's address information before the shipping page. So in effect, the order the the default OSC collects the date is still correct. You might just want to 'mask' the fact that they are creating an account.

 

As far as data collection is concerned, the ony difference between creating an account, and not creating an account is the 'password' field, and the 'newsletter' field.

-------------------------------------------------------------------------------------------------------------------------

NOTE: As of Oct 2006, I'm not as active in this forum as I used to be, but I still work with osC quite a bit.

If you have a question about any of my posts here, your best bet is to contact me though either Email or PM in my profile, and I'll be happy to help.

Link to comment
Share on other sites

  • 2 weeks later...

I used the Guest Account contribution. Very easy to install and seems to be working. Getting more orders now, also along with the new PayPal implementation for business premier accounts not to have a customer sign up at PayPal to process with their credit card. Both are working wonders now!

 

http://www.oscommerce.com/community/contributions,1511

Link to comment
Share on other sites

Well, the important thing to keep in mind here is that if you are shipping something to the customer, then you still have to collect the customer's address information before the shipping page. So in effect, the order the the default OSC collects the date is still correct. You might just want to 'mask' the fact that they are creating an account.

 

As far as data collection is concerned, the ony difference between creating an account, and not creating an account is the 'password' field, and the 'newsletter' field.

After much hastle and adding to the contribution link that Keith linked to I found it is just as effective to just mask the "create account" portion a bit and not have to hastle with the problems that if someone bails before completely checking out they cannot get back in that is inherant in both of the contributions above. At one point I almost had it sorted to re-write the checkout to not require the password at all without the problems of the current contributions and then realized it broke the "shipping estimator" contribution so gave up and went with masking it instead. The "exits" ratio in my site logs from login.php show this is just as effective as the PWA versions by simply giving no reference to "account" anywhere in the checkout process...people are scared to "create an account" but know that they will have to give billing and shipping addresses. I also had it skip the "create_account_success.php" page, which is basically an extra useless page, as well as shortened the page/form where they enter their billing details and removed the newsletter option which spells "SPAM" to most users so the only difference is that they have to enter in a password on the "billing details" page. Might delete the e-mail that is sent as well, although this does not seem to be a factor. You can check it out HERE if you would like just make sure to use a name like abcdef so that I can easily delete it tomorrow. I would suggest adding an item to the cart first and then clicking "checkout" and the new customer-> continue button just to see how it normally functions. It is not much different than any other online shop and believe me I shop a lot online at various stores. :o) I am thinking I will probably rename "create_account.php" to "billing_details.php" just in case someone looks up while entering in their billing details.

Link to comment
Share on other sites

JB-

if you don't mind could you tell me how many files are needed to be edited in order to have something like you did on your site. i know my site loses alot of business because people are scared to "create an account". i am by no means a php guru, so if it is a minimal amount of files to be edited, i might be able to do it.

 

do you have any plans to put together some sort of contrib explaining how you did this?

 

thanks in advance!

Link to comment
Share on other sites

Masking it is easy...I just changed the login.php file to get rid of anything pertaining to "account" and simplified it along with changing the button to a "continue" button instead of "create account". I have another modified version where the customer can just check a radio button if it is their first time in the same box as if it is a returning customer, but it seemed a bit confusing so I went with the current layout. I tested it with a few friends and family and they tried to enter in their e-mail address even if new so it did not seem like a good idea. Then I just made simple modifications to the create_account.php file to condense everything down instead of using all the multiple tables that comes standard, removed the newsletter option, changed some text to say "billing details", and changed the re-direct from the create_account_success page to the checkout_shipping page. I have never had the "greeting text" on the mainpage as I think it is hokey so that is just a matter of commenting out the greeting there. After I posted above, I real quick went in and re-named create_account.php to billing_details.php (have to change the corresponding language file as well) and changed the define in the filenames.php file.

Link to comment
Share on other sites

PayPal sign up is now optional for all US buyers. This should happen automatically. This is unforatunately not available yet for non-US buyers. This remains a top priority (the International team was very busy with paypal.de and ELMI).

Patrick Breitenbach

Link to comment
Share on other sites

This is interesting because I just did basically the same thing on 2 osC sites yesterday. I had already installed Purchase Without Account, but ended up finally getting 'rid' of the account creation after several months with conversions less than expected, and exits from the site in the account creation process.

Technically, it's not all gone, but now when someone wants to checkout, they go directly to the checkout_shipping.php, which, with the PWA mod sends them directly to the PWA Order_Info.php, and they fill in their "Billing Information", and after that, they continue on to the shipping info, and then payment, and finally confirmation.

 

For all intents, I no longer have any customers, just orders. My customer records are now empty, but the order record has all of the info I need.

That's just fine with me, as the conversion has increased (ok, i did one site a month ago, and the other site yesterday).

 

On both sites the products are of the type that don't really inspire repeat buying anyway. It's the type of products you would buy no more than once every 2-4 years. Personally I'd rather have the increased conversions and revenue right now as opposed to the minimal increase I might get from repeat customers that 'might' happen if I made them create an account.

I would probably make account creation optional if the products were something that might bring them back in a month or 2.

Anyway, it works for me!

Link to comment
Share on other sites

ok, i seem to have it working. one problem is that if the customer is at the billing_info.php and they enter information that does not meet the required minumum length (such as password not long enough), then they ae redirected to the create_account.php

 

where do i change this to take the customer back to the billing_info.php ? i think i might just put a redirect in the create_account.php to direct to the billing_info.php as a temporary fix.

 

any ideas? thanks

Link to comment
Share on other sites

well the redirect will take them back to the billing_info.php the problem is that the customer has to re-enter all their information over again, plus it does not bring up what the error was across the top like it did in the create_account.php

 

hopefully someone will let me know the correct way to do the redirect so all the information that they entered will still be there if they had an error with part of the information they had already entered.

Link to comment
Share on other sites

The Pay Without Account (PWA) contrib uses a java pop-up that tells the user what they have done wrong without redirecting them away and making them type it all back in. you might want to take a look at the code in that contrib to see how they are checking the input and popping that up to prevent the redirect.

Link to comment
Share on other sites

  • 4 months later...
Masking it is easy...I just changed the login.php file to get rid of anything pertaining to "account" and simplified it along with changing the button to a "continue" button instead of "create account".  I have another modified version where the customer can just check a radio button if it is their first time in the same box as if it is a returning customer, but it seemed a bit confusing so I went with the current layout.  I tested it with a few friends and family and they tried to enter in their e-mail address even if new so it did not seem like a good idea.  Then I just made simple modifications to the create_account.php file to condense everything down instead of using all the multiple tables that comes standard, removed the newsletter option, changed some text to say "billing details", and changed the re-direct from the create_account_success page to the checkout_shipping page.  I have never had the "greeting text" on the mainpage as I think it is hokey so that is just a matter of commenting out the greeting there.  After I posted above, I real quick went in and re-named create_account.php to billing_details.php (have to change the corresponding language file as well) and changed the define in the filenames.php file.

I took the masking a step further.

 

I noticed that in doing a simple masking, you still have to allow a user to login if they've already purchased something. Why? because if they come back to purchase and the store owner hasn't deleted their customer account, then they will get an error message that states they have to login because their "account" already exists.

 

So with a few small edits of the PHP in the create_account.php file you can eliminate the phone numbers, passwords and newsletter options AND make OSC accept multiple email addresses / multiple accounts.

 

Also youhave to disable the email feature on "account creation" - and you can easily bypass the login.php file alltogether just by redefining the "define" for that file.

 

 

Works very well.

 

Let me know if anyone needs the howto.

Link to comment
Share on other sites

  • 8 months later...
I took the masking a step further.

 

I noticed that in doing a simple masking, you still have to allow a user to login if they've already purchased something.  Why?  because if they come back to purchase and the store owner hasn't deleted their customer account, then they will get an error message that states they have to login because their "account" already exists.

 

So with a few small edits of the PHP in the create_account.php file you can eliminate the phone numbers, passwords and newsletter options AND make OSC accept multiple email addresses / multiple accounts.

 

Also youhave to disable the email feature on "account creation" - and you can easily bypass the login.php file alltogether just by redefining the "define" for that file.

Works very well. 

 

Let me know if anyone needs the howto.

 

I'd like know how you did this. I am able to follow some of this, but I know I don't know enough about how everything fits together to get this whole "masking" procedure worked out. I'd appreciate any help you can provide. Thanks.

Link to comment
Share on other sites

  • 1 month later...
I took the masking a step further.

 

I noticed that in doing a simple masking, you still have to allow a user to login if they've already purchased something.  Why?  because if they come back to purchase and the store owner hasn't deleted their customer account, then they will get an error message that states they have to login because their "account" already exists.

 

So with a few small edits of the PHP in the create_account.php file you can eliminate the phone numbers, passwords and newsletter options AND make OSC accept multiple email addresses / multiple accounts.

 

Also youhave to disable the email feature on "account creation" - and you can easily bypass the login.php file alltogether just by redefining the "define" for that file.

Works very well. 

 

Let me know if anyone needs the howto.

 

:'(

Hello,

I am a 'newbie' to osCommerce and was delighted at finding your answer to this whole Editing out account information. PLEASE TELL ME?? How did you edit the create_php file (eliminating the phone, passwords and newsletter options?

Also, how do I redefine the "define" (and to what do I define it to?) for the login.php file?? I WOULD REALLY APPRECIATE IT IF YOU COULD HELP ME!! Thanks so much! Hope to hear from you soon!

 

Sincerely,

Tom

 

[email protected]

Link to comment
Share on other sites

There are other options for the creating account thing...

jumping rabbitt just put a new contribution up that puts a log in on the create account page so you can skip the while log in or create account screen...

http://www.oscommerce.com/community/contributions,3178

and ksaun thought this up...

Open up checkout_payment.php and find:

// if the customer is not logged on, redirect them to the login page

if (!tep_session_is_registered('customer_id')) {

$navigation->set_snapshot();

tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));

}

 

Change it to:

// if the customer is not logged on, redirect them to the login page

if (!tep_session_is_registered('customer_id')) {

$navigation->set_snapshot();

tep_redirect(tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'));

}

 

Then:

 

In checkout_shipping.php change:

tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));

 

To:

tep_redirect(tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'));

 

and if you want to get rid of the "Account Created Success" window that pops up after they create their account do this:

 

In create_account.php

 

Change

tep_redirect(tep_href_link(FILENAME_CREATE_ACCOUNT_SUCCESS, '', 'SSL'));

 

to

tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));

 

this will remove the thank you message after account creation to speed up checkout. You no longer see create_account_success.php, it goes right to shipping.

 

With this process you have just removed 2 steps from the lengthy cart process, and removed the Dreaded "Become a Member" Page that scares of potential customers, and you still get them to sign in and get them to create the account.

 

Is this great or what?  :thumbsup:

Wendy James

 

Creativity is allowing yourself to make mistakes. Art is knowing which ones to keep.

Link to comment
Share on other sites

There are other options for the creating account thing...

jumping rabbitt just put a new contribution up that puts a log in on the create account page so you can skip the while log in or create account screen...

http://www.oscommerce.com/community/contributions,3178

and ksaun thought this up...

 

Thanks for the props Wendy :thumbsup:

My Favorite Quote from a movie.

 

Question: How do you know women sooo well?

 

Answer: I think of a man, then take away reason and accountability.

Link to comment
Share on other sites

There are other options for the creating account thing...

jumping rabbitt just put a new contribution up that puts a log in on the create account page so you can skip the while log in or create account screen...

http://www.oscommerce.com/community/contributions,3178

and ksaun thought this up...

 

:P

 

THANK YOU SOO MUCH WENDY!

I am going to give ksaun's code a try tommorrow morning! You've just made my rainbow day! Give a shout out to ksaun as well! Talk to you soon!

 

All My Best,

Tom

B)

Link to comment
Share on other sites

Its been awhile since I did my mask.

 

Lemme look at the code again, I'll post back either step by steps or mebbe post a contribution.

Link to comment
Share on other sites

A very nice and smooth solution: More Logical Checkout v1.0

 

Can be used as a standalone solution or if you like in combination with: Combined login and create account page ( By yours truly :lol: )

 

:lol: :D :lol:

Link to comment
Share on other sites

OK - Before I go posting anything solid, I'll post the list of what I think I did to mask the login process.

 

I believe this list will take care of all the necessities. Then I think there are some cosmetic changes to make, although I dont recall where.

 

Try these procedures, post back your results. Once we figure out the missing instructions, I'll post a contribution file to make it easier on future OSC users.

 

Requires PHP 4.2.0 or greater

 

- Rename create_account.php to shipping_details.php

 

- Edit Filenames.php

Around line 36 find:

define('FILENAME_CREATE_ACCOUNT', 'create_account.php');

Change it to:

define('FILENAME_CREATE_ACCOUNT', 'shipping_details.php');

 

Around line 41 find:

define('FILENAME_LOGIN', .............);

Change it to:

define('FILENAME_LOGIN', FILENAME_CREATE_ACCOUNT);

 

- Edit shipping_details.php

This gets rid of telephone form field, replacing it with dummy number

Around line 47 find:

$telephone = $HTTP_POST_VARS['telephone'];

Change it to:

$telephone = tep_db_prepare_input('555-555-5555');

 

This creates a temporary password

Around line 54 find:

    $password = $HTTP_POST_VARS['password'];
   $confirmation = $HTTP_POST_VARS['confirmation'];

Change it to:

    $tmpPW = rand(5,10).'TemporaryPassword';
   $password = tep_db_prepare_input($tmpPW);
   $confirmation = tep_db_prepare_input($tmpPW);

 

This makes OSC allow more than 1 of the same email addy

Around line 100 find:

      if ($check_email['total'] > 0) {
       $error = true;

       $messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR_EXISTS);
     }

Change it to:

      if ($check_email['total'] > 0) {
       $error = false;//true


       //$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR_EXISTS);
     }

 

This gets rid of the auto-email sending OSC does

Around line 233 find:

// build the message content
     $name = $firstname . ' ' . $lastname;

     if (ACCOUNT_GENDER == 'true') {
        if ($gender == 'm') {
          $email_text = sprintf(EMAIL_GREET_MR, $lastname);
        } else {
          $email_text = sprintf(EMAIL_GREET_MS, $lastname);
        }
     } else {
       $email_text = sprintf(EMAIL_GREET_NONE, $firstname);
     }

     $email_text .= EMAIL_WELCOME . EMAIL_TEXT . EMAIL_CONTACT . EMAIL_WARNING;
     tep_mail($name, $email_address, EMAIL_SUBJECT, $email_text, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

Change it to:

// build the message content
/* COMMENTED OUT SO IT DOES NOT SEND AN EMAIL AFTER FILLING OUT "SHIPPING DETAILS"
// WHICH USED TO BE "CREATE ACCOUNT"
     $name = $firstname . ' ' . $lastname;

     if (ACCOUNT_GENDER == 'true') {
        if ($gender == 'm') {
          $email_text = sprintf(EMAIL_GREET_MR, $lastname);
        } else {
          $email_text = sprintf(EMAIL_GREET_MS, $lastname);
        }
     } else {
       $email_text = sprintf(EMAIL_GREET_NONE, $firstname);
     }

     $email_text .= EMAIL_WELCOME . EMAIL_TEXT . EMAIL_CONTACT . EMAIL_WARNING;
     tep_mail($name, $email_address, EMAIL_SUBJECT, $email_text, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
*/

 

This removes all the HTML code that displays all the data entry fields we dont want

I merely used HTML comment code to block out the display

Around line 438-500 find:

      <tr>
       <td class="main"><b><?php echo CATEGORY_CONTACT; ?></b></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" cellspacing="2" cellpadding="2">
             <tr>
               <td class="main"><?php echo ENTRY_TELEPHONE_NUMBER; ?></td>
               <td class="main"><?php echo tep_draw_input_field('telephone') . ' ' . (tep_not_null(ENTRY_TELEPHONE_NUMBER_TEXT) ? '<span class="inputRequirement">' . ENTRY_TELEPHONE_NUMBER_TEXT . '</span>': ''); ?></td>
             </tr>
             <tr>
               <td class="main"><?php echo ENTRY_FAX_NUMBER; ?></td>
               <td class="main"><?php echo tep_draw_input_field('fax') . ' ' . (tep_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="inputRequirement">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td class="main"><b><?php echo CATEGORY_OPTIONS; ?></b></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" cellspacing="2" cellpadding="2">
             <tr>
               <td class="main"><?php echo ENTRY_NEWSLETTER; ?></td>
               <td class="main"><?php echo tep_draw_checkbox_field('newsletter', '1') . ' ' . (tep_not_null(ENTRY_NEWSLETTER_TEXT) ? '<span class="inputRequirement">' . ENTRY_NEWSLETTER_TEXT . '</span>': ''); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td class="main"><b><?php echo CATEGORY_PASSWORD; ?></b></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" cellspacing="2" cellpadding="2">
             <tr>
               <td class="main"><?php echo ENTRY_PASSWORD; ?></td>
               <td class="main"><?php echo tep_draw_password_field('password') . ' ' . (tep_not_null(ENTRY_PASSWORD_TEXT) ? '<span class="inputRequirement">' . ENTRY_PASSWORD_TEXT . '</span>': ''); ?></td>
             </tr>
             <tr>

               <td class="main"><?php echo ENTRY_PASSWORD_CONFIRMATION; ?></td>
               <td class="main"><?php echo tep_draw_password_field('confirmation') . ' ' . (tep_not_null(ENTRY_PASSWORD_CONFIRMATION_TEXT) ? '<span class="inputRequirement">' . ENTRY_PASSWORD_CONFIRMATION_TEXT . '</span>': ''); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>

Change it to:

      <!--tr>
       <td class="main"><b><?php echo CATEGORY_CONTACT; ?></b></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" cellspacing="2" cellpadding="2">
             <tr>
               <td class="main"><?php echo ENTRY_TELEPHONE_NUMBER; ?></td>
               <td class="main"><?php echo tep_draw_input_field('telephone') . ' ' . (tep_not_null(ENTRY_TELEPHONE_NUMBER_TEXT) ? '<span class="inputRequirement">' . ENTRY_TELEPHONE_NUMBER_TEXT . '</span>': ''); ?></td>
             </tr>
             <tr>
               <td class="main"><?php echo ENTRY_FAX_NUMBER; ?></td>
               <td class="main"><?php echo tep_draw_input_field('fax') . ' ' . (tep_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="inputRequirement">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td class="main"><b><?php echo CATEGORY_OPTIONS; ?></b></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" cellspacing="2" cellpadding="2">
             <tr>
               <td class="main"><?php echo ENTRY_NEWSLETTER; ?></td>
               <td class="main"><?php echo tep_draw_checkbox_field('newsletter', '1') . ' ' . (tep_not_null(ENTRY_NEWSLETTER_TEXT) ? '<span class="inputRequirement">' . ENTRY_NEWSLETTER_TEXT . '</span>': ''); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td class="main"><b><?php echo CATEGORY_PASSWORD; ?></b></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" cellspacing="2" cellpadding="2">
             <tr>
               <td class="main"><?php echo ENTRY_PASSWORD; ?></td>
               <td class="main"><?php echo tep_draw_password_field('password') . ' ' . (tep_not_null(ENTRY_PASSWORD_TEXT) ? '<span class="inputRequirement">' . ENTRY_PASSWORD_TEXT . '</span>': ''); ?></td>
             </tr>
             <tr>

               <td class="main"><?php echo ENTRY_PASSWORD_CONFIRMATION; ?></td>
               <td class="main"><?php echo tep_draw_password_field('confirmation') . ' ' . (tep_not_null(ENTRY_PASSWORD_CONFIRMATION_TEXT) ? '<span class="inputRequirement">' . ENTRY_PASSWORD_CONFIRMATION_TEXT . '</span>': ''); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr-->

 

 

 

And I think that does all the NECESSARY changes!

 

Now let us know what cosmetic changes are needed as well

 

B)

Link to comment
Share on other sites

Well this has worked a treat for me. The only other necessary changes were to remove the login and my account links from the header (header.php) and to change the redirect in shipping_details.php to miss out create_account_success.php.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...