<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>