My notes on how to create a LAMP form using PDO and MySQL:
Part 2: Create the mysql login files
This is part 2 of a series:
Part 1 - Prepare mysql
Part 2 - Create the mysql login files
Part 3 - Retrieve all records
Part 4 - Insert a new record
Part 5 - Search for a record
Part 6 - Embed the form
Identify a directory outside of web root
You need to store your login credentials outside the web server directory.
This is to prevent the files from being downloaded if you accidentally misconfigure your web server.
In this example, I will store the credentials in
/var/forms
Create the files
cd /var/forms
touch login_reader.php
touch login_writer.php
Determine who apache runs as
ps aux | egrep "apache|httpd"
Since I run Ubuntu, apache runs as www-data
Change ownership of the files
By default the files will be owned by root and only root will be able to read/write the files.
You can see this by running the command:
ls -l
My files show:
owner = root
group = root
We need to change ownership so we can later assign permissions to the owner.
Recall that apache runs as www-data on Ubuntu, so we will change permissions to www-data:
chown www-data login_reader.php
chown www-data login_writer.php
ls -l
Change permissions on the files
My current file permissions:
owner: rw
group: r
world: r
Remove read permissions for world:
chmod o-r login_reader.php
chmod o-r login_writer.php
Grant write permissions for group (root):
chmod g+w login_reader.php
chmod g+w login_writer.php
Remove write permissions for www-data:
chmod u-w login_reader.php
chmod u-w login_writer.php
Finished permissions:
-r--rw---- 1 www-data root 0 Jun 21 18:53 login_reader.php
-r--rw---- 1 www-data root 0 Jun 21 18:53 login_writer.php
Determine character set:
You will need this to create your login files (see below).
Run this command against mysql:
SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,
information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_name = "Form1";
My system comes back with latin1
Populate login_reader.php:
<?php
$host = 'localhost';
$db = 'myforms';
$user = 'testreader';
$pass = 'myStrongPassword';
$charset = 'latin1';
?>
Populate login_writer.php:
<?php
$host = 'localhost';
$db = 'myforms';
$user = 'testwriter';
$pass = 'myOtherStrongPassword';
$charset = 'latin1';
?>