Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Masking Account in 2.3.4


Guest

Recommended Posts

Years ago on an old 2.2 shop, I used threads from this site to mask the account creating process. Some of you may remember it....you renamed create_account.php to shipping_details.php and replaced some code to autofill the password so you could just remove the password field completely, then you replaced some code that allowed multiple accounts to use the same e-mail address, so repeat customers weren't told that their email was already in use, etc...

I would like to upgrade to the 2.3.4 master/responsive version, and would like to mask the account creating process. The exact code that worked on 2.2 won't work on 2.3.4, so I'm wondering if anyone would care to help to fix it. If so, I will paste the instructions from 2.2 below:

 

- Rename create_account.php to shipping_details.php

- Edit Filenames.php
Around line 36 find:
CODE
define('FILENAME_CREATE_ACCOUNT', 'create_account.php');
Change it to:
CODE
define('FILENAME_CREATE_ACCOUNT', 'shipping_details.php');

Around line 41 find:
CODE
define('FILENAME_LOGIN', .............);
Change it to:
CODE
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:
CODE
$telephone = $HTTP_POST_VARS['telephone'];
Change it to:
CODE
$telephone = tep_db_prepare_input('555-555-5555');

This creates a temporary password
Around line 54 find:
CODE
$password = $HTTP_POST_VARS['password'];
$confirmation = $HTTP_POST_VARS['confirmation'];
Change it to:
CODE
$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:
CODE
if ($check_email['total'] > 0) {
$error = true;

$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR_EXISTS);
}
Change it to:
CODE
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:
CODE
// 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:
CODE
// 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:
CODE
<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') . '&nbsp;' . (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') . '&nbsp;' . (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') . '&nbsp;' . (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') . '&nbsp;' . (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') . '&nbsp;' . (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:


CODE
<!--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') . '&nbsp;' . (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') . '&nbsp;' . (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') . '&nbsp;' . (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') . '&nbsp;' . (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') . '&nbsp;' . (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


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

Hello @B.C.,

 

I guess this is something like guest checkout or purchase without account.

There is already a 2.3.4 BS version available: Purchase without account BS

and the thread: Purchase without account for 2.3.4 and BS2334

 

rgds

Rainer

Link to comment
Share on other sites

I've tried everything available and either it's buggy or broken or it doesn't do what I need done. But years ago on a 2.2 shop I was able to mask account and cut two more  useless pages out of the checkout process, I was hoping somebody would know how to do the same on 2.3.4

 

Link to comment
Share on other sites

Just out of curiosity, if anybody reading this can help.....I'm wondering why the lack of interest in this. If you care to chime in here, is it impossible? Is everybody happy with the stock checkout? It seems like in the old days, when everyone was still using 2.2, so many people were interested in no account and shortening the stock checkout process. Now everybody is switching to 2.3.4 and there seems to be nothing that helps with this checkout. Did everybody just give up? I must be missing something. Maybe everybody is sitting around waiting for 2.4 to come out and fix this?

Link to comment
Share on other sites

On 23/7/2017 at 10:24 PM, B.C. said:

I've tried everything available and either it's buggy or broken or it doesn't do what I need done. 

@B.C. Maybe you would get better help telling us:

- what you tried

- what is broken or buggy

- what exact you need to be done

rgds

Rainer

Link to comment
Share on other sites

37 minutes ago, raiwa said:

@B.C. Maybe you would get better help telling us:

- what you tried

- what is broken or buggy

- what exact you need to be done

rgds

Rainer

Nonsense, in my original post I pasted the exact code that did exactly what I needed it to do in 2.2 and asked for help making that exact code work in 2.3.4. So that's exactly what I need to be done.  Other contributions that I tried and discarded years ago for various reasons are completely  beside the point.

Yes, many contributions, tips and tricks have come close to doing what I needed, including PWA, but it should be enough to simply mention that when you point in that direction. For the purposes of THIS thread, I think it's impossible to get any more exact about exactly what I'm requesting help on.

Link to comment
Share on other sites

@B.C. If you're looking for someone to code for you try posting in the commercial forum.  Otherwise do as Rainer suggested....install PWA and then posted exactly what you're having trouble with or explain what exactly doesn't work with the code you posted.  The easier you can make it for people to understand the more likely it is that you'll get some help.  If your not getting responses it is likely because you didn't explain things well enough --  not because people don't want to help or are disinterested.

Dan

Link to comment
Share on other sites

@B.C. I use (basically) this exact thing in 2.3.4 BS. 

Ill share the the code I use to hide the password. 

However a little different then you have discribed - I hide the password creation fields but DO send an "account creation" email with a random created password. 

Im sure you can modify it to work to your needs 

Link to comment
Share on other sites

@B.C. Just trying to remember what I had done....

I used this.... here:https://apps.oscommerce.com/HyRDM

modified to work with 2.3.4 BS - i did not re-name create_account.php.

Combined with thoughts found here:http://www.clubosc.com/remove-the-password-in-oscommerce.html

The actual working code for the password function is below in create_account.php;

	/*$password = tep_db_prepare_input($_POST['password']);
    $confirmation = tep_db_prepare_input($_POST['confirmation']);*/
    $password = tep_create_random_value(10);
    $confirmation = $password;

And comment out the password field:

  <?php /*
  <h2><?php echo CATEGORY_PASSWORD; ?></h2>
  
  <div class="contentText">
    <div class="form-group has-feedback">
      <label for="inputPassword" class="control-label col-sm-4"><?php echo ENTRY_PASSWORD; ?></label>
      <div class="col-sm-8">
        <?php
        echo tep_draw_input_field('password', NULL, 'required aria-required="true" id="inputPassword" placeholder="' . ENTRY_PASSWORD . '"', 'password');
        echo FORM_REQUIRED_INPUT;
        if (tep_not_null(ENTRY_PASSWORD_TEXT)) echo '<span class="help-block">' . ENTRY_PASSWORD_TEXT . '</span>';
        ?>
      </div>
    </div>
    <div class="form-group has-feedback">
      <label for="inputConfirmation" class="control-label col-sm-4"><?php echo ENTRY_PASSWORD_CONFIRMATION; ?></label>
      <div class="col-sm-8">
        <?php
        echo tep_draw_input_field('confirmation', NULL, 'required aria-required="true" id="inputConfirmation" placeholder="' . ENTRY_PASSWORD_CONFIRMATION . '"', 'password');
        echo FORM_REQUIRED_INPUT;
        if (tep_not_null(ENTRY_PASSWORD_CONFIRMATION_TEXT)) echo '<span class="help-block">' . ENTRY_PASSWORD_CONFIRMATION_TEXT . '</span>';
        ?>
      </div>
    </div>
  </div> */?>

And the sending the email in /includes/modules/pages/tp_email_create_account.php add $password to the global and

      global $oscTemplate, $mimemessage, $lastname, $firstname, $gender, $email_address, $password;

And $password to the email text (note I used HTML emails... you may need to find where this would go)......

In my case in includes/modules/pages/templates/email_create_account_html.php

						  <tr><td><?php echo sprintf(EMAIL_PASSWORD, $password); ?></td></tr></br></br>		

 

 

Link to comment
Share on other sites

@B.C., what several people have asked you is just what you are trying to accomplish here? "I like 2.3.4BS except that it doesn't do X", (or conversely, "it does X but I don't want it to)... what is X? There may be easy, or even built-in, ways of doing what you want, with no need to hack massive amounts of code. PWA has been suggested, but you say No. It's not a good idea to try to back fit some change to ancient code without fully understanding what the original code's purpose was (both before and after the hack), whether something equivalent is already available today, and what the best approach would be to doing it today if it needs to be implemented afresh.

Link to comment
Share on other sites

4 hours ago, greasemonkey said:

@B.C. I use (basically) this exact thing in 2.3.4 BS. 

Ill share the the code I use to hide the password. 

 

Thank you, I'm glad somebody finally understood what I was saying in plain English.

Link to comment
Share on other sites

5 hours ago, Dan Cole said:

@B.C. If you're looking for someone to code for you try posting in the commercial forum.  Otherwise do as Rainer suggested....install PWA and then posted exactly what you're having trouble with or explain what exactly doesn't work with the code you posted.  The easier you can make it for people to understand the more likely it is that you'll get some help.  If your not getting responses it is likely because you didn't explain things well enough --  not because people don't want to help or are disinterested.

Dan

Has something changed here? Years ago, when building my first site, it was super common for people to trade tips and tricks and hacks. You know, the whole meaning of "open source" and all that. It seems like anymore this whole forum is just a big funnel to the commercial forum. Let me simple-fy it for the confused:

I specifically asked for help with code for masking the account creation process.

I generally wondered why there weren't as many folks talking about doing this type of thing on 2.3.4 as there always was on 2.2. The reason I don't start threads here is because if I search hard enough I can find that my question has been asked and answered previously. In this particular case, I'm hitting a brick wall when it comes to checkout modification contributions for 2.3.4, when there were lots for 2.2, both free and paid. Just a general observation and wondering if anyone had an opinion about it.

 

Link to comment
Share on other sites

Well at least two things come to my mind you shouldn't have to ask for, just because they would have been oblivious by looking at the code of BS edge master: There are no file definitions anymore and there are no DB tables definitions anymore. Those might have been reducing your questions to  zero.

So as an example:

CODE
define('FILENAME_CREATE_ACCOUNT', 'create_account.php');
Change it to:
CODE
define('FILENAME_CREATE_ACCOUNT', 'shipping_details.php');

This won't work anymore you'd have to find any file linking or calling to 'create_account.php' and change there to 'shipping_details.php'

Best regards

Christoph

Link to comment
Share on other sites

12 hours ago, B.C. said:

Has something changed here? Years ago, when building my first site, it was super common for people to trade tips and tricks and hacks. You know, the whole meaning of "open source" and all that. It seems like anymore this whole forum is just a big funnel to the commercial forum. Let me simple-fy it for the confused:

I specifically asked for help with code for masking the account creation process.

I generally wondered why there weren't as many folks talking about doing this type of thing on 2.3.4 as there always was on 2.2. The reason I don't start threads here is because if I search hard enough I can find that my question has been asked and answered previously. In this particular case, I'm hitting a brick wall when it comes to checkout modification contributions for 2.3.4, when there were lots for 2.2, both free and paid. Just a general observation and wondering if anyone had an opinion about it.

 

When the BS version was initially released there were no addons for it. Most of the first ones that were made available were hacks to the older versions so that it worked with the BS version. If there is no addon available for what you want, it means that no one has needed it, and spent time making one that works. It then means that you have to make the alterations required, or pay someone to make the changes required, and if you feel like it you can release your addon to the community so others can use it. Thats how open source works.

There is now a general consensus that addons should not alter the core code as this makes updating the software harder in the future. This is why latest addons are modular and are one click install. Hacking core code is a thing of the past. Get out of that habit now.

REMEMBER BACKUP, BACKUP AND BACKUP

Link to comment
Share on other sites

7 hours ago, 14steve14 said:

 Thats how open source works.

Thanks for the reply. Yes, that is one way that open source works. We also used to ask each other for help here, and one of the first things to happen is someone would say, "Paste your code here so we can see what needs to be changed." So that's why I pasted the code here. These days it seems like the response is, "Oh, you want someone to code for you? PAY SOMEONE!" It's gross.

Besides, I have tried paying people. When I decided to upgrade to 2.3.4 after all these years, I started noticing that things were different, the whole OSC culture changed with 2.3.4, for the worse. I installed 2.3.4 and approached a longtime member here and offered to pay for help, since I found zero contributions available for what I needed. They said, "You have the wrong version of 2.3.4, I only work on the official version." So I deleted everything and installed the official 2.3.4, and paid for the changes. Then I wanted some other help that the first person couldn't do, so I approached someone else in the commercial forum, and they said, "You have the wrong version of 2.3.4, I only work on Burt's responsive 2.3.4, NOT the official release."

So the way this whole "different versions of 2.3.4" and the bickering factions and the fact that every request for help leads to snarky demands to "go post it in the commercial forum," maybe you guys don't see how much things have changed, but it's unfortunate. I am familiar with OSC and I find the whole thing confusing and frustrating anymore, think how many new folks are just going to turn to Zen and WordPress, etc....

Whatever, it's your little sandbox, you can run it how you want, I don't have time for drama, I'm just trying to keep my business going.....It's just a shame to see things go this way............A more cynical person would think that 2.3.4BS was created so people couldn't easily tinker with their own site anymore, but had to pay for everything...........

Link to comment
Share on other sites

As I tried to tell you there are massive code changes necessary to accomplish what you want to get. Its not about to get paid or not, its a question about the path oscommerce  has taken:  Away from more and more core code changes with which you'd might have ended up with a confusing mess of conflicting snippets - To an untouched core with installable plugins or apps (like wordpress) you name it. This has its own limitations but its the right way to go. 

I myself am (was) really not happy with the abundance of  DB table definitions for example but you need to get used to it if you want to use BS edge. 

And if you'd followed a lot of threads here like me I can't see anything like "make a commercial request first" here, but I think your attitude that I receive as "I'm not interested in the new concept, just get this working for me" does not motivate anyone to help.

And still there is no law forbidding to touch the core but you should know what you are doing and be grateful if someone jumps in to help you there. I already told you what to do If you want that but you don't even bothered.

Best regards

Christoph

Link to comment
Share on other sites

20 hours ago, beerbee said:

As I tried to tell you......... I already told you what to do If you want that but you don't even bothered.

 

Apparently I hurt some feelings, as I am no longer being notified of responses to this thread, so I, obviously, missed your earlier post.

Link to comment
Share on other sites

@B.C. I wouldn't assume you hurt anyone's feelings and that is why you are not getting notifications....... although it would certainly seem that way.... this thread has gone completely sideways (and I'm not getting into it.... I find it rather ridiculous...  you asked for help, I gave it.... since then I just went and got a bowl of popcorn to watch what has unfolded....).

It looks as though they didn't tag you is all.....

 

Link to comment
Share on other sites

13 minutes ago, greasemonkey said:

@B.C. the funny thing about forums like this - "people read what they want". 

Just to be clear - my note above was meant as supportive towards you and not those who were giving you a hard time (which I found... ridiculous).

Regrets....:angry:

I wasn't talking to you.

Link to comment
Share on other sites

  • 3 weeks later...
On 7/30/2017 at 6:15 PM, B.C. said:

These days it seems like the response is, "Oh, you want someone to code for you? PAY SOMEONE!" It's gross.

There are very few coders on the Forum and all of them do it for a living.  Why would these people help you?
Most of the pro developers departed because there is no way for them to earn a living here.

What there are a lot of;

  1. Shopowners who are looking for help
  2. Shopowners who can code a bit
  3. Shopowners who can code a lot

Shopowners who can code are busy running their own shops...and if you are super lucky you might hit on one who is able to help you.

 

Link to comment
Share on other sites

On 7/30/2017 at 1:15 PM, B.C. said:

Thanks for the reply. Yes, that is one way that open source works. We also used to ask each other for help here, and one of the first things to happen is someone would say, "Paste your code here so we can see what needs to be changed." So that's why I pasted the code here. These days it seems like the response is, "Oh, you want someone to code for you? PAY SOMEONE!" It's gross.

Open source is freely giving out information on how to do things, as well as pointing out errors in your code (and possibly suggesting fixes). It is not doing all your work for you for free. At this point, I'm not sure exactly what you were looking for others to do, but apparently it came across to many as, "Do my work for me." You may have intended it to be, "I need help here," but it came out as a demand for others to work for free for you. Your failure to recognize that has further antagonized many of the people here. Attitude check time. Chill, dawg,

"You want someone to code for you? PAY SOMEONE!" is not gross. It's quite reasonable. The operative term here is "code for you". Free help is one thing (being neighborly); major free labor is quite another (slavery). I suggest an apology (or at least, a mea culpa) and a restatement of how much you're looking for others to do. If they say, "That's too much work to do for free," you'll have to pay for it.

It's also possible to catch people at a bad time, when something is irritating them, and they'll give a sharp response. Learn to take it gracefully.

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...