<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
I was going to send this as an attachment, but I don't know if the
list would allow that.<br>
<br>
Below is a general overview, lesson, help technique, whatever you
want to call it,<br>
that shows how to make a login web page that will interact with
filepro.<br>
<br>
I sure hope I do not get a lot of criticism, because I am just
trying to help those who may not know this stuff yet.<br>
I changed the font to courier. I find it easier to read.<br>
<br>
BTW I know, I know, everybody is using div now. I am an old dog. My
bad.<br>
<br>
Here goes nothing;<br>
<font face="Courier New, Courier, monospace"><br>
<br>
login.php:<br>
<br>
<?php<br>
session_start();<br>
?><br>
<br>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<a class="moz-txt-link-rfc2396E" href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</a>><br>
<html xmlns=<a class="moz-txt-link-rfc2396E" href="http://www.w3.org/1999/xhtml">"http://www.w3.org/1999/xhtml"</a>><br>
<head><br>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" /><br>
<title></title><br>
<style type="text/css"><br>
<br>
//this make a nice rounded button<br>
input[type=submit], input[type=button], button {<br>
-webkit-border-radius: 25px;<br>
-moz-border-radius: 25px;<br>
background-color: silver;<br>
border-color: silver;<br>
border-radius: 25px;<br>
border: 1px solid rgba(0,0,0,0.4) ;<br>
font-family: Arial, Helvetica, sans-serif;<br>
font-size: 17px;<br>
line-height: 19px;<br>
font-weight: bold;<br>
}<br>
<br>
//makes a rounded corner border<br>
.rndcorner {<br>
border:1px solid black;<br>
padding:10px 10px;<br>
background:white;<br>
border-radius:15px;<br>
width:1000px;<br>
}<br>
<br>
.text-medium {<br>
font-family: 'Montserrat', sans-serif;<br>
font-size: 17px;<br>
line-height: 19px;<br>
}<br>
<br>
.text-large {<br>
font-family: 'Montserrat', sans-serif;<br>
font-size: 19px;<br>
line-height: 21px;<br>
font-color: black;<br>
}<br>
<br>
.input-big {<br>
width: 120px;<br>
height: 30px;<br>
font-size: 20px;<br>
}<br>
<br>
</style><br>
</head><br>
<body><br>
<?php<br>
<br>
if ($_POST['user_login'] != '') {<br>
$string = '';<br>
$id = uniqid('');<br>
$filename = "/WEBIN/$id";<br>
$string="";<br>
system("/usr/local/yourclt/get_login " . escapeshellarg("$id")
. " " . escapeshellarg("$user_login") . " " .
escapeshellarg("$user_passwd") . " > /dev/null");<br>
if (file_exists($filename)) {<br>
$data = file($filename);<br>
$size = sizeof($data);<br>
for($i = 0; $i < sizeof($data); $i++) {<br>
$string = $data[$i];<br>
}<br>
list($clt_num,$clt_name,$clt_address1,$clt_address2,$clt_city,<br>
$clt_state,$clt_zip,$clt_phone,$clt_email,$clt_contact,)=explode('|',$string);<br>
unlink($filename);<br>
$_SESSION['clt_num'] = $clt_num;<br>
$_SESSION['clt_name'] = $clt_name;<br>
$_SESSION['clt_address1'] = $clt_address1;<br>
$_SESSION['clt_address2'] = $clt_address2;<br>
$_SESSION['clt_city'] = $clt_city;<br>
$_SESSION['clt_state'] = $clt_state;<br>
$_SESSION['clt_zip'] = $clt_zip;<br>
$_SESSION['clt_phone'] = $clt_phone;<br>
$_SESSION['clt_email'] = $clt_email;<br>
$_SESSION['clt_contact'] = $clt_contact;<br>
} else {<br>
echo ("<script><br>
var msg = "Invalid Login or Password!";<br>
alert(msg);<br>
</script>");<br>
}<br>
}<br>
<br>
echo ("<FORM METHOD='post' ACTION='" . $_SERVER['PHP_SELF']) .
"' onkeypress=\"return event.keyCode != 13;\"><br>
<center><div class=\"rndcorner\"><br>
<table width=\"100%\" border=\"0\" cellpadding='0'
cellspacing='0' class='text-medium'><br>
<tr><td><br>
<table border=\"0\" width=\"100%\" class=\"text-medium\"
cellpadding=\"0\" cellspacing=\"0\"><br>
<tr><td width=\"250\"><img
src=\"images/your_client_logo.jpg\"></td><br>
<td valign=\"middle\" align=\"center\" class=\"text-large\"
nowrap>Login Page</td><br>
<td width=\"250\"></td></tr><br>
</table><br>
</td></tr>");<br>
<br>
if ($_SESSION['clt_name'] == "") {<br>
echo ("<tr><td height=\"300\" align=\"center\"
valign=\"middle\"><br>
<table width=\"100%\"</font><font face="Courier New,
Courier, monospace"> class=\"text-medium\"</font><font
face="Courier New, Courier, monospace"> border=\"0\"
cellpadding=\"0\" cellspacing=\"0\"><br>
<tr><td><br>
<table class=\"text-large\" cellpadding=\"0\"
cellspacing=\"0\" valign=\"middle\" align=\"center\"><br>
<tr><td
align=\"right\">Login:</td><td><input
type=\"text\" class=\"input-big\" id=\"user_login\"
name=\"user_login\" <br>
size=\"15\"></td></tr><br>
<tr><td
align=\"right\">Password:</td><td><input
type=\"password\" class=\"input-big\" id=\"user_passwd\"
name=\"user_passwd\" <br>
size=\"15\"></td></tr><br>
<tr><td></td><td><input
type=\"submit\" value=\"Login\"></td></tr><br>
</table><br>
</td></tr><br>
</table></td></tr><br>
</td></tr></table><br>
<script><br>
type=\"text/javascript\"<br>
language=\"javascript\"><br>
document.getElementById(\"user_login\").focus();<br>
</script><br>
</div><br>
</body><br>
</html><br>
</form>");<br>
exit();<br>
}<br>
?><br>
<br>
To get data from filepro to the web pages, I create a directory<br>
/WEBIN and I link it to /var/www/html/WEBIN. This must be
configured<br>
as an accessible folder within the apache config.<br>
This folder is cleared out every night.<br>
<br>
I create a filepro file called "r_process" can be any file with at
least one field.<br>
</font><br>
<font face="Courier New, Courier, monospace"><font face="Courier
New, Courier, monospace">prc.get_login is used to export any and
all info required for this login web page <br>
into a oipe delimited file that must be accessible by apache. I
do not add a record<br>
to this file unless I need to print. I use @menu and exit out
when done.<br>
<br>
</font>/usr/local/yourclt/get_login<br>
PFSKIPLOCKED=5 export PFSKIPLOCKED<br>
TERM=ansi export TERM<br>
PFCMARK=30 export PFCMARK<br>
USER_LOGIN=$2 export USER_LOGIN<br>
USER_PASSWD=$3 export USER_PASSWD<br>
/appl/fp/dclerk r_process -Sblk -Z get_login -Y noprc -R $1<br>
<br>
i.e.<br>
1 clt_num<br>
2 clt_name<br>
3 clt_address1<br>
4 clt_address2<br>
5 clt_city<br>
6 clt_state<br>
7 clt_zip<br>
8 clt_phone<br>
9 clt_email<br>
10 clt_contact<br>
<br>
fa="/WEBIN/"{@PM<br>
<br>
export ascii mgr = (fa) r=\n f=|<br>
<br>
mgr(1)=clt(1);mgr(2)=clt(2);mgr(3)=clt(3);mgr(4)=clt(4);mgr(5)=clt(5)<br>
<br>
mgr(6)=clt(6);mgr(7)=clt(7);mgr(8)=clt(8);mgr(9)=clt(9);mgr(10)=clt(10)<br>
<br>
mgr(11)=""<br>
<br>
You end up with a file like this;<br>
<br>
1000|The Application Group|123 Main Street|Suite
2913|Houston|TX|77272|(713) 555-1212|(281)
555-3232|<a class="moz-txt-link-abbreviated" href="mailto:richard@appgrp.net|Richard">richard@appgrp.net|Richard</a> D. Williams|<br>
<br>
It is very important to export a last field (mgr(11)) as a blank
value.<br>
This places a pipe at the end of the data but before the carriage
return<br>
<br>
Ok. Now your data is waiting for you. Lets use php within the
page to get it.<br>
<br>
//test to see if a user_login was typed in<br>
if ($_POST['user_login'] != '') {<br>
//this generates a unique 13 character alpha numeric value. It
serves as your data bucket for <br>
//both out-going and in-coming;<br>
$id = uniqid('');<br>
//this is where your filepro program will export the pipe
delimited data<br>
//I use a directory named WEBIN. You can use any folder you like,
as long as apache can reach it.<br>
$filename = "/WEBIN/$id";<br>
//This is the variable that will hold the exported filepro data<br>
$string="";<br>
//execute the script, passing the unique id, user_login,
user_passwd. @PM will hold the unique id<br>
//the other values will be exported to the environment by the
script. you could use /usr/local/bin, but <br>
//I like making a special folder to hold these web related scripts<br>
system("/usr/local/yourclt/get_login " . escapeshellarg("$id")
. " " . escapeshellarg("$user_login") . " " .
escapeshellarg("$user_passwd") . " > /dev/null");<br>
//Did we get some data - yes<br>
if (file_exists($filename)) {<br>
//this opens the file containing the pipe delimited data, reads it
into a variable, $string<br>
$data = file($filename);<br>
$size = sizeof($data);<br>
for($i = 0; $i < sizeof($data); $i++) {<br>
$string = $data[$i];<br>
}<br>
//This little wonder parses the pipe delimited string into
individual variables<br>
list($clt_num,$clt_name,$clt_address1,$clt_address2,$clt_city,<br>
$clt_state,$clt_zip,$clt_phone,$clt_email,$clt_contact,)=explode('|',$string);<br>
//Remove the file containing the data, we do not need it any more<br>
unlink($filename);<br>
//set the retrieved data into SESSION variables so they can be use
in subsequent pages.<br>
$_SESSION['clt_num'] = $clt_num;<br>
$_SESSION['clt_name'] = $clt_name;<br>
$_SESSION['clt_address1'] = $clt_address1;<br>
$_SESSION['clt_address2'] = $clt_address2;<br>
$_SESSION['clt_city'] = $clt_city;<br>
$_SESSION['clt_state'] = $clt_state;<br>
$_SESSION['clt_zip'] = $clt_zip;<br>
$_SESSION['clt_phone'] = $clt_phone;<br>
$_SESSION['clt_email'] = $clt_email;<br>
$_SESSION['clt_contact'] = $clt_contact;<br>
} else {<br>
//Oops! No data. Let the user know the login failed<br>
echo ("<script><br>
var msg = "Invalid Login or Password!";<br>
alert(msg);<br>
</script>");<br>
}<br>
}<br>
<br>
</font>Please note, this is very syntax heavy. Each "if" statement
must be opened<br>
by a "{" and closed by the "}". If there is an "else", it must have
a "}" <br>
before and a "{" after. A bracket, brace, comma, etc out of place
and your<br>
page will not run and web programs do not give you very clear errors
like <br>
filepro.<br>
<br>
Well, that's it for now. This may not have been a great
presentation of this technique.<br>
I hope the full php page at the top helps give you a big picture and
the explanation <br>
below that makes it clear.<br>
<br>
There are many ways to write in php. I prefer to start php and stay
there. <br>
Others prefer to go in and out only when php is needed. I have
always found that to be<br>
a syntax challenge.<br>
<br>
I respect those who have a different view.<br>
<br>
If this helps somebody out there, then I have started to pay back
for all other who have<br>
helped me over the past 35 years.<br>
<br>
Good Luck,<br>
<br>
Richard D. Williams<br>
<br>
<br>
BTW, I have not scowered this for typos or other issues.<br>
But I will answer questions to further clarify or resolve problems.<br>
<font face="Courier New, Courier, monospace"><br>
<br>
</font>
</body>
</html>