Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Contact Form text area is limiting and the form wont center

Engaged ,
Mar 09, 2025 Mar 09, 2025

Finally trying my hand at a contact form -

 

https://pitchlab.net/contact/

 

 

before I dive into server side I need to make sure it works properly and there are two issues- minor but annoying:

 

first issue is the textarea for "Message" is behaving like an input in that it is limiting the width you can type.. a text area should allow you to type all the way across..

 

and finally-

 

the form div wont center - I used a parent container flexbox for the columns and a div wrapping the  form and it wont center.. 

 

 

my parent:

.contact_flex_container {
width:100%;
height:100%;
display: flex;
justify-content:center;
align-items: center;
padding-top: 10vh;
}

 

my form div:

 

.form_container{
justify-content: center;
}

 

any help would be appreciated!

2.5K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 2 Correct answers

Community Expert , Mar 12, 2025 Mar 12, 2025
quoteId like it to operate more like this with a message received below but Im not sure how secure it is to have the PHP be on the same page including the email in the code:
By @REELHERO

============

To assuage your fears about running scripts on the contact page, PHP scripts are hidden. Nobody can see them. 

 

To illustrate, view source in your browser.  All you see is HTML, CSS and JavaScript.  No PHP code.

 

PHP is invaluable for concealing sensitive information like Google private keys and other

...
Translate
Community Expert , Mar 13, 2025 Mar 13, 2025
quote

I like the way this operates but Im not sure how secure it is to have the PHP be on the same page, including the email in the code, is it opening me up to spam?:

By @REELHERO

 

 

@REELHERO your other thread Contact form/PHP Best practices re security from which this quotation is taken and which has been closed, I can't propose any answer, so please excuse me for polluting this thread.

 

As @Nancy OShea  mentioned, PHP is indeed invisible to the browser, so direct access to its data is not poss

...
Translate
Community Expert ,
Jul 31, 2025 Jul 31, 2025

I see that you are using mail() instead of PHP Mailer... I strongly advise you to switch to PHP Mailer for multiple reasons.... Maîtriser l’envoi d’e-mails avec PHPMailer

 

If your function $auto_success = mail($email, $auto_subject, $auto_message, $auto_headers); does not return any outgoing messages, your provider may have blocked emails (external emails without strong identification (SPF...)) to prevent spam... Are you using shared hosting or a virtual machine?

 

Furthermore, echo are not necessary (except for debugging).

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jul 31, 2025 Jul 31, 2025

funny you should say that- I was working on using a PHP mailer after I sent that earlier- this is where I landed:

 

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

session_start();

if ($_SERVER["REQUEST_METHOD"] === "POST") {
// CSRF protection
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
http_response_code(403);
echo 'Invalid CSRF token.';
exit;
}

// Honeytrap spam filter
if (!empty($_POST['website'])) {
http_response_code(400);
echo 'Spam detected.';
exit;
}

// Sanitize inputs
$name = htmlspecialchars(trim($_POST["name"]));
$email = filter_var(trim($_POST["email"]), FILTER_VALIDATE_EMAIL);
$message = htmlspecialchars(trim($_POST["message"]));

if (!$email) {
http_response_code(400);
echo 'Invalid email.';
exit;
}

// Setup mailer
$mail = new PHPMailer(true);
try {
// SMTP Settings (Bluehost)
$mail->isSMTP();
$mail->Host = 'mail.pitchlab.net'; // or use 'smtp.bluehost.com'
$mail->SMTPAuth = true;
$mail->Username = 'inquiries@pitchlab.net'; // your email
$mail->Password = 'PW'; // use App Password if 2FA is on
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

// Email to YOU (the site owner)
$mail->setFrom('inquiries@pitchlab.net', 'Pitchlab ');
$mail->addAddress('inquiries@pitchlab.net');
$mail->Subject = 'Pitchlab Inquiry';
$mail->Body = "From: $name <$email>\n\n$message";

$mail->send();

// Auto-Responder to the User
$mail->clearAddresses();
$mail->addAddress($email);
$mail->Subject = 'Thanks for contacting Pitchlab';
$mail->Body = "Hi $name,\n\nThanks for reaching out. We received your message and will get back to you ASAP.\n\n The Pitchlab Team";
$mail->send();

echo "Success";
} catch (Exception $e) {
http_response_code(500);
echo "Mailer Error: " . $mail->ErrorInfo;
}
}
?>

 

 

**should i remove the echo?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 31, 2025 Jul 31, 2025

Conversations can sometimes be surprising; we write... and we read between the lines... the internet is fast... 🙂

 

How do you use this script? It seems to be from AJAX? The echo will be useful for tracking, debugging, etc. You are free to keep them or not.

The key question is, does it work as you wanted ?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jul 31, 2025 Jul 31, 2025

As you must know by now, Im not a natural coder - Im a film director who stubbornly knew what he wanted and then went and dove in to figuring it out.. So forgive my piecemeal approach to everything..

 

I am using AJAX - i dropped the PHP mailer in the contact directory and the process_form3.php accesses it from there..

 

it works in the sense that i wanted to a) have the form function and send me the inquiry b) send an autoresponse to the sender c) not reload the page but have a nice elegant "Thanks. Message received" fade on. As far if it is protecting me from spam, that remains to be seen, but I believe implementing all your suggestions in that article as well as the PHP mailer should to the trick- anything specific I should look for?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 02, 2025 Aug 02, 2025

Hi Lena - so I started getting a lot of spam again despite all the additional protection I learned from your article - what am I doing wrong?

 

CONTACT FORM PAGE:

 

<?php
session_start();
if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
?>
 
HEAD
 
THE FORM:
<form id="contactForm" method="POST" action="process_form3.php">
      <!-- Honeypot -->
      <div style="display:none;">
        <label for="website">Website</label>
        <input type="text" name="website" id="website" autocomplete="off">
      </div>
 
      <!-- Hidden CSRF Token -->
      <input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>">
      <input type="hidden" name="form_load_time" id="form_load_time">
 
      <input type="text" name="name" id="email" required placeholder="TYPE YOUR NAME">
      <input type="text" name="email" id="text" required placeholder="TYPE YOUR EMAIL">
      <textarea name="message" id="textarea"required placeholder="YOUR MESSAGE"></textarea>
            
      <input type="submit" id="submit" name="submit" value="Submit">
      <div id="formErrors"></div>
    </form>
  </div>
</div>
 
<div class="thank_you_message" style="display:none; text-align:center;">
  <p class="thank_you">Thanks! Message Sent.</p>
  <a href="#" id="returnToForm" class="returnToForm">Return to Form</a>
</div>
 
THE SCRIPT:
 
<script>
// Load time for spam timing test
const formLoadTime = Date.now();
document.getElementById('form_load_time').value = formLoadTime;
 
// Fetch CSRF token
fetch('get_csrf.php')
  .then(res => res.json())
  .then(data => {
    document.getElementById('csrf_token').value = data.csrf_token;
  });
 
// Submit form with protections
const form = document.getElementById('contactForm');
form.addEventListener('submit', function(e) {
  e.preventDefault();
 
  const formData = new FormData(form);
  const formContainer = document.querySelector('.form_container');
  const thankYou = document.querySelector('.thank_you_message');
  const errors = document.getElementById('formErrors');
 
  fetch(form.action, {
    method: 'POST',
    body: formData
  })
  .then(res => res.text())
  .then(response => {
    if (response.trim().toLowerCase() === "success") {
      formContainer.style.transition = "opacity 0.7s";
      formContainer.style.opacity = 0;
 
      setTimeout(() => {
        formContainer.style.display = "none";
        thankYou.style.display = "block";
        thankYou.style.opacity = 0;
        thankYou.style.transition = "opacity 0.7s";
        setTimeout(() => {
          thankYou.style.opacity = 1;
        }, 10);
      }, 700);
    } else {
      errors.textContent = response;
    }
  })
  .catch(() => {
    errors.textContent = "An error occurred. Please try again.";
  });
});
 
// Return to form
const returnBtn = document.getElementById('returnToForm');
returnBtn.addEventListener('click', function(e) {
  e.preventDefault();
 
  const form = document.getElementById('contactForm');
  const formContainer = document.querySelector('.form_container');
  const thankYou = document.querySelector('.thank_you_message');
 
  thankYou.style.transition = "opacity 0.7s";
  thankYou.style.opacity = 0;
 
  setTimeout(() => {
    thankYou.style.display = "none";
    form.reset();
    formContainer.style.display = "block";
    formContainer.style.opacity = 0;
    formContainer.style.transition = "opacity 0.7s";
    setTimeout(() => {
      formContainer.style.opacity = 1;
    }, 10);
  }, 700);
});
</script>
 
PROCESS_FORM3.PHP:
 
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
 
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
 
session_start();
 
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    // CSRF protection
    if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
        http_response_code(403);
        echo 'Invalid CSRF token.';
        exit;
    }
 
    // Honeytrap spam filter
    if (!empty($_POST['website'])) {
        http_response_code(400);
        echo 'Spam detected.';
        exit;
    }
 
    // Sanitize inputs
    $name = htmlspecialchars(trim($_POST["name"]));
    $email = filter_var(trim($_POST["email"]), FILTER_VALIDATE_EMAIL);
    $message = htmlspecialchars(trim($_POST["message"]));
 
    if (!$email) {
        http_response_code(400);
        echo 'Invalid email.';
        exit;
    }
 
    // Setup mailer
    $mail = new PHPMailer(true);
    try {
        // SMTP Settings (Bluehost)
        $mail->isSMTP();
        $mail->Host = 'mail.pitchlab.net'; // or use 'smtp.bluehost.com'
        $mail->SMTPAuth = true;
        $mail->Username = 'inquiries@pitchlab.net'; // your email
        $mail->Password = '######; // use App Password if 2FA is on
        $mail->SMTPSecure = 'tls';
        $mail->Port = 587;
 
        // Email to YOU (the site owner)
        $mail->setFrom('inquiries@pitchlab.net', 'Pitchlab ');
        $mail->addAddress('inquiries@pitchlab.net');
        $mail->Subject = 'Pitchlab Inquiry!';
        $mail->Body = "From: $name <$email>\n\n$message";
 
        $mail->send();
 
        // Auto-Responder to the User
        $mail->clearAddresses();
        $mail->addAddress($email);
        $mail->Subject = 'Thanks for contacting Pitchlab';
        $mail->Body = "Hi $name,\n\nThanks for reaching out. Your message just landed in the lab, we will get back to you ASAP!
 
The Pitchlab Team
        $mail->send();
 
        echo "Success";
    } catch (Exception $e) {
        http_response_code(500);
        echo "Mailer Error: " . $mail->ErrorInfo;
    }
}
?>
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 02, 2025 Aug 02, 2025

Nothing stops human spammers. 

 

Nancy O'Shea— Product User, Community Expert & Moderator
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 02, 2025 Aug 02, 2025

I hear you but this looked pretty robotic to me.. 

I want to at least make sure Im doing everything I can

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 02, 2025 Aug 02, 2025

Robotic in what sense? 

If the hidden honeypot field contains data, the form sending script should abort.

That's how honeypots are supposed to work. 

 

Nancy O'Shea— Product User, Community Expert & Moderator
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 02, 2025 Aug 02, 2025

Did i get the honeypot right? does my code look ok? bc Theres no way someone is pasting this into my form by hand - the names arent even consitent-  it screams of bot:

 

Name: Aisha Levey
 
Message:
Hello,
 
We have a promotional offer for your website pitchlab.net.
 
Ready to Start Getting Clients and Sales
— No More Stress. Just Sales
You’ve tried the tools, hacks, and templates Still stuck at zero?
 
it's not your effort. It's the system
 
No pressure. Just something that finally brings in real, paying customers.
 
• Shows your offer to the right buyers
 
• Says exactly what they need to hear
 
• Converts traffic into real, paying customers
 
No setup. No delays. No learning curve.
Just switch it on — and let it sell for you.
You want more sales — fast. Exactly what you get.
Now that you're here, SaleStorm AI is ready to sell
Brings in real sales. Fast. No guesswork.
 
 
You are receiving this message because we believe our offer may be relevant to you.
If you do not wish to receive further communications from us, please click here to UNSUBSCRIBE:
Address: 209 West Street Comstock Park, MI 49321
Looking out for you, Ethan Parker
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 02, 2025 Aug 02, 2025

I don't know if it works. Did you test it?

Turn off CSS in your browser & try submitting spam through your form. If the script aborts as it's supposed to, you should not receive anything in your email inbox.

 

FYI, just having an email address attached to your website makes you a spam target. There's literally nothing you can do to stop it except terminate that email account & create new ones.  Once an email address gets out in the wild, it will be exploited by humans as well as bots.

 

Nancy O'Shea— Product User, Community Expert & Moderator
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 02, 2025 Aug 02, 2025

thanks nancy I might create a new email for it - but when I removed the css and filled it out it didnt even submit..and i didnt get an email - so it seems its working.. t

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 02, 2025 Aug 02, 2025

BINGO!  It's not originating from your form.

Your email address is tainted.

Kill it and create a new one that nobody on the planet has access to.

 

Good luck!

 

 

Nancy O'Shea— Product User, Community Expert & Moderator
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 02, 2025 Aug 02, 2025

Done! 

Thank you Nancy.. fingers crossed no one gets it - or Ill have to get mercenary (Im not even sure what that means!)

 

Cheers!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 03, 2025 Aug 03, 2025

Don't be tempted to post your new email address in public view. You should be fine. 

 

Nancy O'Shea— Product User, Community Expert & Moderator
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 04, 2025 Aug 04, 2025

unfortunately I'm already getting spam with the contact form subject line - definitely bots -  I can do a different email again but I have to figure out out why this honeytrap and all my other protection is not working before IU do.. its only going to accelerate

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 04, 2025 Aug 04, 2025

Rename your contact page and delete the old one from your server.

Change something in your new contact form/script to differentiate it from your old one.

 

 

 

 

 

 

 

 

 

Nancy O'Shea— Product User, Community Expert & Moderator
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 04, 2025 Aug 04, 2025

done. Does it matter what I change? can it be the order? phrases in the email?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 04, 2025 Aug 04, 2025

It doesn't matter.  Just make it different in some way so you can tell which form it's coming from, the old one or the new one.

 

 

 

Nancy O'Shea— Product User, Community Expert & Moderator
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 04, 2025 Aug 04, 2025

Copy that. ok done.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 06, 2025 Aug 06, 2025

When contact forms are above your pay grade, use a 3rd party form service like Jot Forms, Wufoo.com or Mailchimp. They do all the heavy lifting on their servers so you don't have to.

 

 

 

 

 

Nancy O'Shea— Product User, Community Expert & Moderator
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 11, 2025 Aug 11, 2025
LATEST

Its all above my pay grade Nancy..yet alas..here we are.

You must know me by now - I am nothing if not resolute !

 

No spam in a few days.. fingers crossed.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 05, 2025 Aug 05, 2025

Hello @REELHERO , I'm sorry, the work here at the studio, with many files to prepare, made me forget this talk.


To complete what @Nancy OShea said, I think filtering robot is somehow play cat and mouse... and the important is not the form HTML itself, but in the server code processed by process_form3.php.

 

Did you set a log as mentioned in the article ?

 

This is very important. The log show who send, how it send, or how they eventualy pass the rules. If you need to change the form and have doubt about who send, you can use an hidden field (placed in the form itself, you don't need to change the file) :

<input type="hidden" name="session_marker" value="alpha42">
then change the value to fit your tests
<input type="hidden" name="session_marker" value="alpha43">


you will catch this information at the server, and knows about the senders... If you use CSRF, the server script should not be able to be invoked other than through the form.

The honeypot's technic is often good, but don't write name in code that say “honeypot” { in clear... avoid me... 🙂 }. In the article I use this word for teaching purpose, but better use a name that look normal, example:

<input type="text" name="profile_tag" autocomplete="off">


And in CSS:

input[name="profile_tag"] {
    display: none;
}


Please tell what check you do in process_form3.php, and what the log give you, or not.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 06, 2025 Aug 06, 2025

Hi Lena - no worries!

 

spam is still happening frequently even with the changes above (new page) its coming from the new PHP I can tell by the subject..

 

this is my form I dont call the form honeypot but I do have it commented out but I will change the name completely:

 

the form on the contact page:

 

<!-- Honeypot -->
<div style="display:none;">
<label for="website">Website</label>
<input type="text" name="website" id="website" autocomplete="off">
</div>

<!-- Hidden CSRF Token -->
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>">
<input type="hidden" name="form_load_time" id="form_load_time">

 

does the same apply for the csrf? should I not call it that?

 

here is what appears on the process_form_new.php

both honeypot and csrf are commented out.. should i remove or change the name on here? I guess a bot can see code thats commented out?

 

if ($_SERVER["REQUEST_METHOD"] === "POST") {
// CSRF protection
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
http_response_code(403);
echo 'Invalid CSRF token.';
exit;
}

// Honeytrap spam filter
if (!empty($_POST['website'])) {
http_response_code(400);
echo 'Spam detected.';
exit;
}

 

 

I did not include a log- so youre saying I should inlude this in the form:

 

<input type="hidden" name="session_marker" value="alpha42"> then change the value to fit your tests <input type="hidden" name="session_marker" value="alpha43">

and this is going to seem like a silly question but where on the server side would I see a log? i connect through FTP (using dreamweaver obviously) does the server auto-create a log?

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 06, 2025 Aug 06, 2025

If you don't mind, I suggest that we take a step back and go one by one, calm and clean.

 

First of all, use the article as a guide — https://www.puce-et-media.com/protection-de-base-pour-un-formulaire/ it's made to be read in order.  So, before going further, do you have any issue reading the article in English? If yes, let me know, I will help you go through it step by step differently.

 

Well, so far, everything starts with your HTML form (contact.php) and your server-side script (process_form3.php) that receives the data.

 

You already have this basics, and you should start by cleaning them. That means that you have to keep only what’s needed for you : name, email, message and submit button. Remove eveything else... in both files.

Then you will have to follow the article step by step, you'll find the approrpiate code for each parts :

Starting with the referer.

Well, as explained, some browsers, don’t send it, but that’s not a big deal. The point is to start logging suspicious attempts.

for that , just define the log file and locate it where ever you want, usually in the same folder as your server script is fine. Call it as you like... atempts.log, log.log, journal.log.... 

 

$logFile = 'attempts.log';
or
$logFile = '../attempts.log';

 

Then you can download and read it via FTP to see what’s going on.

 

Now, continue to add one by one each traps... so, the next following step... and for that you can use a witness, an invisible one, added to your form...

 

<input type="hidden" name="my_version_or_trap" value="alpha01">

 

and on each step, on each new implementation, you just change the value that will help you to track your attempt.... alpha01, alpha02, alpha03... and so on...

 

well... that said...

 

The next point is to add a CSRF protection. In fact , the goal is to generate a token on the server and inject it into the form when the page loads. If a bot tries to send the form without loading it first, there will be no token, as a matter of fact, the server can refuse... do you get the point ?

 

if you read in the code, you'll see that logAttempt() will track that kind of try.

 

Still reading the article, the following will place a honeypot. 

 

Then, next step, is to check the submit time. If someone fills and submits the form in 1 second, either in 10 seconds...  it’s probably a bot. Human speed is always a bit slower 🙂

We can also, limit the number of tries. A real user may retry 2 or 3 times. But a bot will insist. After 5 attempts, you can slow down the script or ignore the request. And again, log it.

 

As you can see, the log is the key. It keeps track of what happened, when, how  and it will help you understand who’s trying to bypass the form. 

 

For sure, this script is not perfect, but it is somehow already very useful.

If spam keeps coming, we can go further: checking the IP address of the sender, blocking bad patterns… and so on... 
But first, let’s set up those initial protections, nice and clean and we’ll see later.

Does this plan work for you?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 06, 2025 Aug 06, 2025

Hi Lena-

That is the article I used to build the contact form and the Process form.PHP but ill start again from scratch.. and include the log.. Its late in Los Angeles so Ill do it in the morning ..

 

thank you!

Todd

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines