LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   PHP5 and a contact form (https://www.linuxquestions.org/questions/linux-software-2/php5-and-a-contact-form-4175583131/)

Pedroski 06-26-2016 06:49 PM

PHP5 and a contact form
 
At home, on my little laptop, I made a simple webpage and I'm trying a contact form.

When I click on submit, instead of submitting, I get a window asking me what I want to open send_mail.php with. It suggests Geany.

I have put my email in send_mail.php

Quote:

$webmaster_email = "mymail@foxmail.com"
I have installed:

Quote:

pedro@pedro-schule:~$ php --version
PHP 5.5.9-1ubuntu4.17 (cli) (built: May 19 2016 19:05:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
pedro@pedro-schule:~$
What do I need to do to make the php script do its job??

AlucardZero 06-26-2016 08:04 PM

Configure whatever Web server you have running to handle serving PHP correctly.

Pedroski 06-26-2016 08:34 PM

Ok, thanks. I have apache2 installed.

Which conf file needs what addition?

I am trying to run the webpage from /home/pedro/mywebpage This is my /etc/apache/mods-available/php5.conf I commented out the last bit. I thought it would make php work there.

Quote:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
SetHandler application/x-httpd-php-source
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Order Deny,Allow
Deny from all
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
Order Deny,Allow
Deny from all
</FilesMatch>

# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.

#the following commented out by me
#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_flag engine Off
# </Directory>
#</IfModule>

Pedroski 06-27-2016 05:47 AM

I read some more and changed /etc/php5/php.ini

I inserted this

Quote:

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;changed by me
sendmail_path = /usr/sbin/sendmail -t -i
;sendmail_path =
But I still don't get any mail!

hydrurga 06-27-2016 07:10 AM

Can you please check that you've carried out all the necessary install steps here:

https://www.digitalocean.com/communi...tack-on-ubuntu

Pedroski 06-27-2016 06:27 PM

[side note: I got a message that it would be impossible to send email from my home computer to the public internet. If that's true I can stop wasting my time.]

Thanks for that.

I got apache2 working. I got the default page. So I moved my personal webpage to /var/www/html and it works, I see it when I enter localhost in Firefox.

I got php working. I get the php info page.

My problem seems to lie in sendmail. sendmail was present in /usr/sbin but it was a dummy, almost empty file.

So I installed sendmail, which seems quite complex, a lot of files which may or may not need tweaking.

I ran sendmailconfig and that's probably where the devil lies: too many settings, which are right for me??

I am in China, so I use mail.qq.com

The domain is qq.com, POP3 is pop.qq.com:995 smtp is smtp.qq.com ports 465 to 587

I want my webpage to send mail to my qq mail address when the user clicks submit.

php has the function mail()

My contact form page does not give me any error message, but I do not get any mail.

The trick here is, I believe, to get sendmail working. If you know a good link for that, I would be very grateful.

I don't know if php can work with postfix, which is more 'native' to Ubuntu.

This link is good, but I can't get sendmail to work. Is it really that difficult??

http://stackoverflow.com/questions/1...mail-on-ubuntu

Maybe, when I get around to publishing my web page, it will work on the server. I would still like to make it work on my laptop, just for the experience.

I think I need a working smtp server to send the mails.

This does not work at the moment and I don't know why. I changed the email to my email.

Quote:

$ echo "My test email being sent from sendmail" | /usr/sbin/sendmail myemail@domain.com
This is the last bit of /var/log/mail.log from yesterday

Quote:

Jun 27 21:49:23 pedro-schule sendmail[3670]: alias database /etc/mail/aliases rebuilt by pedro
Jun 27 21:49:23 pedro-schule sendmail[3670]: NOQUEUE: SYSERR(root): /etc/mail/aliases: line 1: missing colon
Jun 27 21:49:23 pedro-schule sendmail[3670]: /etc/mail/aliases: 0 aliases, longest 0 bytes, 0 bytes total
Jun 27 21:49:37 pedro-schule sm-mta[1445]: restarting /usr/sbin/sendmail-mta due to signal
Jun 27 21:49:37 pedro-schule sm-mta[3714]: starting daemon (8.14.4): SMTP+queueing@00:10:00
Jun 27 21:51:34 pedro-schule sendmail[3891]: u5RDpYPs003891: from=www-data, size=99, class=0, nrcpts=1, msgid=<201606271351.u5RDpYPs003891@pedro-schule.net>, relay=www-data@localhost
Jun 27 21:51:34 pedro-schule sm-mta[3892]: STARTTLS=server, relay=localhost [127.0.0.1], version=TLSv1/SSLv3, verify=NOT, cipher=DHE-RSA-AES256-GCM-SHA384, bits=256/256
Jun 27 21:51:34 pedro-schule sendmail[3891]: STARTTLS=client, relay=[127.0.0.1], version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-GCM-SHA384, bits=256/256
Jun 27 21:51:34 pedro-schule sm-mta[3892]: u5RDpYmo003892: from=<www-data@pedro-schule.net>, size=328, class=0, nrcpts=1, msgid=<201606271351.u5RDpYPs003891@pedro-schule.net>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Jun 27 21:51:34 pedro-schule sendmail[3891]: u5RDpYPs003891: to=rapidresults@foxmail.com, ctladdr=www-data (33/33), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30099, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (u5RDpYmo003892 Message accepted for delivery)
Jun 27 21:51:35 pedro-schule sm-mta[3894]: STARTTLS=client, relay=mx2.qq.com., version=TLSv1/SSLv3, verify=OK, cipher=RC4-SHA, bits=128/128
Jun 27 21:51:40 pedro-schule sm-mta[3894]: u5RDpYmo003892: to=<rapidresults@foxmail.com>, ctladdr=<www-data@pedro-schule.net> (33/33), delay=00:00:06, xdelay=00:00:06, mailer=esmtp, pri=120328, relay=mx2.qq.com. [120.198.201.148], dsn=5.0.0, stat=Service unavailable
Jun 27 21:51:40 pedro-schule sm-mta[3894]: u5RDpYmo003892: u5RDpemn003894: DSN: Service unavailable
Jun 27 21:51:40 pedro-schule sm-mta[3894]: u5RDpemn003894: to=<www-data@pedro-schule.net>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30000, dsn=2.0.0, stat=Sent
Also, I'm not sure if the sendmail path in /etc/php5/apache2/php.ini should have "" or not:

This:

Quote:

sendmail_path = "/usr/sbin/sendmail -t -i -f fromMe@blah.com"
or this

Quote:

sendmail_path = /usr/sbin/sendmail -t -i -f fromMe@blah.com

hydrurga 06-27-2016 06:54 PM

Googling ubuntu sending mail apache produces results such as the following:

http://askubuntu.com/questions/47609...-php-send-mail

Have a read through the various results, which suggest both sendmail and postfix solutions.

My advice would be to keep things simple and test whichever method you choose through the command line before testing it through php.

Sorry I can't give you better help than that as I don't send mail through my local server. Perhaps someone else will be able to offer you better help.

Please let us know how you get on.

Pedroski 06-27-2016 09:32 PM

Well, I got the tip to use ssmtp, they said sendmail or postfix are both overkills for my purpose, which is just sending an email to me.

I installed ssmtp which uninstalls sendmail, puts a symlink in /usr/sbin

I am getting closer.

This is the last bit of my /var/log/mail this morning:

Quote:

Jun 28 10:00:02 pedro-schule sSMTP[2182]: Server didn't like our AUTH LOGIN (530 Must issue a STARTTLS command first.)
Jun 28 10:06:14 pedro-schule sSMTP[2841]: Server didn't like our AUTH LOGIN (530 Must issue a STARTTLS command first.)
Jun 28 10:09:02 pedro-schule sSMTP[2916]: Server didn't like our AUTH LOGIN (530 Must issue a STARTTLS command first.)
Jun 28 10:19:54 pedro-schule sSMTP[3093]: Creating SSL connection to host
Jun 28 10:19:55 pedro-schule sSMTP[3093]: SSL connection using RSA_ARCFOUR_SHA1
Jun 28 10:19:55 pedro-schule sSMTP[3093]: Authorization failed (535 Error: \C7\EBʹ\D3\C3\CA\DAȨ\C2\EB\B5\C7¼\A1\A3\CF\EA\C7\E9\C7뿴: http://service.mail.qq.com/cgi-bin/h...28&&no=1001256)
Jun 28 10:20:01 pedro-schule sSMTP[3114]: Creating SSL connection to host
Jun 28 10:20:01 pedro-schule sSMTP[3114]: SSL connection using RSA_ARCFOUR_SHA1
Jun 28 10:20:02 pedro-schule sSMTP[3114]: Authorization failed (535 Error: \C7\EBʹ\D3\C3\CA\DAȨ\C2\EB\B5\C7¼\A1\A3\CF\EA\C7\E9\C7뿴: http://service.mail.qq.com/cgi-bin/h...28&&no=1001256)
I set ssmtp.conf to:

UseSTARTTLS=yes
UseTLS=yes

AuthUser=my_foxmail_account_name@foxmail.com
AuthPass=my_password

qq.com doesn't like this kind of 'satellite' log in probably.

Any more tips??

hydrurga 06-28-2016 07:05 AM

Ok, I've just got ssmtp working on my test rig (Mint 17.3 64-bit Xfce). Here is how I did it. Replace gedit with your editor of choice and items in italics with your particular details. I've set this up with gmail - I would advise you to do that in the first place and then try with another email provider after you get it working.

Info taken from: http://www.havetheknowhow.com/Config...all-ssmtp.html

Code:

sudo apt-get update
sudo apt-get install ssmtp

(installs ssmtp 2.64-7)

Code:

sudo gedit /etc/ssmtp/ssmtp.conf
and change to the following:

Code:

# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=username@gmail.com

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

AuthUser=username@gmail.com
AuthPass=password
UseTLS=YES
UseSTARTTLS=YES

# Where will the mail seem to come from?
rewriteDomain=gmail.com

# The full hostname
hostname=smtp.gmail.com:587

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

Then I went onto Gmail and changed the following setting:

Code:

My Account->Sign-in & security->Allow less secure apps: ON
Then back on the command line:

Code:

ssmtp destination_email_address
and entered:

Code:

To: destination_email_address
From: username@gmail.com
Subject: Testing

Hello world!

then pressed Ctrl-D.

Note that ssmtp gets the job done but has some drawbacks and caveats - see https://www.linux.com/news/ssmtp-sim...ative-sendmail.

Pedroski 06-28-2016 07:17 PM

Hi, Good Morning!

Thanks for your efforts on my behalf! Very grateful!

I looked through all the settings on my email settings, but I do not find anything corresponding to

Quote:

My Account->Sign-in & security->Allow less secure apps: ON
I tried setting the AuthMeth to CRAM-MD5 but then I get:

Quote:

Jun 29 08:04:58 pedro-schule sSMTP[3651]: SSL connection using RSA_ARCFOUR_SHA1
Jun 29 08:04:58 pedro-schule sSMTP[3651]: Server rejected AUTH CRAM-MD5 (502 Error: auth command not implemented)
Without that I get the same as yesterday:

Quote:

Jun 29 08:06:50 pedro-schule sSMTP[3657]: Creating SSL connection to host
Jun 29 08:06:50 pedro-schule sSMTP[3657]: SSL connection using RSA_ARCFOUR_SHA1
Jun 29 08:06:51 pedro-schule sSMTP[3657]: Authorization failed (535 Error: \C7\EBʹ\D3\C3\CA\DAȨ\C2\EB\B5\C7¼\A1\A3\CF\EA\C7\E9\C7뿴: http://service.mail.qq.com/cgi-bin/h...28&&no=1001256)
In a terminal I am getting the same errors showing as are written to the mail.log.

In China you have to get a license (ICP Internet Content Provider license) to open a web site. We have that now, but the ISP says they have not yet been officially informed by the authorities, so web site is not public yet. Once our webpage is open I'll try this again from the web site. If it doesn't work then, I'll ask the ISP to help.

Unless of course you have any other ideas!

Thanks again!

hydrurga 06-28-2016 07:24 PM

You perhaps missed the bit where I said "Then I went onto Gmail and changed the following setting:".

Code:

My Account->Sign-in & security->Allow less secure apps: ON
should be done in your Gmail account.

Are you able to have access to a Gmail account to test carry out the steps I laid out? It will no doubt work with other email providers, although not all, but I know it works with Gmail.

You shouldn't need to be playing around with other settings. Try to keep it simple.

Pedroski 06-30-2016 07:44 PM

Good Morning,

been away for a few days, sorry for the late reply. I did note your advice about the setting, but qqmail does not have an equivalent setting, as far as I can see.

We live in China. google is not available except using a vpn. I can't just open gmail. I have a vpn, but not everybody does, so I'd rather not use gmail. The mails sent from here may or may not arrive, depending on the mood of the government!

qq is big in China, everyone has it. foxmail.com is just an alias for qq.com

Once the site is open, I'll try this from there. We still haven't got a functioning webpage, they company still has not received official approval, although we have.

Pedroski 07-09-2016 01:21 AM

Hi again,

to take up this thread again: now we have our web page online, but the contact form still will not work. I wonder if you have any idea why not.

If you go to www.rapidresults.wang and then contact>send us a message you can see the contact form.

A right click and you can view the source code. If you then click on send_mail.php you will see this error:

Quote:

PHP Notice: Undefined index: email_address in D:\freehost\fa5d40d2\web\send_mail.php on line 21
PHP Notice: Undefined index: comments in D:\freehost\fa5d40d2\web\send_mail.php on line 22
Line 21 and 22 from send_mail.php are:

$email_address = $_REQUEST['email_address'] ;
$comments = $_REQUEST['comments'] ;


These variables are defined in send_us_a_message.html here, (at least that's what I thought):

Where must I define them??

Quote:

<input type="text" name="email_address" and <textarea name="comments"
this is the relevant part of send_us_a_message.html

Quote:

<form action="send_mail.php" method="post">
<table style="text-align:left; ">
<tr>
<td>Your Email Adress:</td>

<td>
<input type="text" name="email_address" value="" maxlength="100" style="width:260px; height:20px; background-color:#D0F18F;" />
</td>
</tr>
<tr>
<td>Comments:</td>
<td>
<textarea name="comments" id="comments" style="text-align:left; width:520px; height:90px; background-color:#D0F18F;">
This form is NOT working at the moment, please email us directly. Sorry for the inconvenience.
</textarea>
</td>

hydrurga 07-09-2016 11:49 AM

You may have other things wrong, but at a minimum:

method="post"

therefore you should be using $_POST[], not $_REQUEST[].

Pedroski 08-16-2016 10:56 PM

As an afterthought:

It still won't work. The web hosting people are useless, they just say we don't know anything about web pages, but I think I may know why it will not work: The server is a Windows server and Windows does not/may not use PHP, it uses asp.net, whatever that is.

I saw a tutorial on the net about how to set up a contact form using asp. Haven't tried it yet, but I will look into it.

Can Windows use PHP?


All times are GMT -5. The time now is 12:11 AM.