pword mar16 added medexpiry field may17 new freeparking database jun17 password 10 char limit jan20 added ITC marks sep21 forgotten password info in message body rather than message header sep21 disabled editing name added auto generate password included dblogin.php included memberlogin.php on save, clear plaintext password and save hash forgotten password generates, saves and sends new password nov21 corrected new password update feb22 corrected last/next annual date for aircraft listing jul22 corrected rehashing passwords jan23 reduced new password length from 10 to 8 jan23 convert to mysqli feb23 php7 compatible may23 php8.0 compatible mar24 disabled dob edit todo **************************************************************************************/ session_start(); //session variables //$_SESSION[‘loggedin’] initally null- set/cleared via admin login //$_SESSION[‘pilotid’]; $mysqli; $conn; $errmsg=””; //includes include ‘iConnect.php’; //database connect function include ‘iLogin.php’; //member login function include ‘hashme.php’; //password hash/save include ‘generatePassword.php’; //simple password generator iConnect(‘raanz_db’); //connect to database //if entry point is from logout button if (isset($_POST[‘pilotlogout’])) { $_SESSION[‘loggedin’]=””; $_SESSION[‘pilotid’]=””; } // if entry point is from member login button…. check member number/password if (isset($_POST[‘pilotlogin’])) { $_SESSION[‘loggedin’]=””; $_SESSION[‘pilotid’]=””; $pilotid=$_POST[‘pilotid’]; $pilotpw=$_POST[‘pilotpw’]; if (iLogin($pilotid,$pilotpw,0)) { $_SESSION[‘loggedin’]=’true’; $_SESSION[‘pilotid’]=$pilotid; } } //load/reload from member record if ($_SESSION[‘loggedin’]==”true”) { $pilotid=$_SESSION[‘pilotid’]; $result = mysqli_query($conn,”SELECT * FROM members WHERE (number = ‘$pilotid’)”); $row = mysqli_fetch_array($result); $pname=$row[‘fullname’]; $pnick=$row[‘nickname’]; $add1=$row[‘address1’]; $add2=$row[‘address2’]; $add3=$row[‘address3’]; $pbirth=$row[‘birthdate’]; $phone=$row[‘phone’]; $pmail=$row[’email’]; $sname=$row[‘surname’]; $pilotpw=$row[‘pword’]; //plaintext password // $hash=$row[‘hash’]; //hashed password $confirm=””; // $metpw=$row[‘metflight’]; $club=$row[‘club’]; $class=$row[‘class’]; $expiry=$row[‘expiry’]; $medexpiry=$row[‘medexpiry’]; $lastcmv=$row[‘lastcmv’]; $receipt=$row[‘receipt’]; $part61=$row[‘part61’]; $tt=$row[‘totaltime’]; $tm=$row[‘totalmicro’]; $ty=$row[‘totalyear’]; $cert=$row[‘certificate’]; $group=$row[‘groups’]; $pax=$row[‘pax’]; $frto=$row[‘frto’]; $lastbfr=$row[‘lastbfr’]; $nextbfr=$row[‘nextbfr’]; $inst=$row[‘instructor’]; $ato=$row[‘ATO’]; $ia=$row[‘IA’]; $tpilot=$row[‘testpilot’]; $tow=$row[‘tow’]; $water=$row[‘water’]; $appoint=$row[‘appointment’]; $cdate=$row[‘contactdate’]; $creason=$row[‘contactreason’]; $law=$row[‘law’]; $nav=$row[‘nav’]; $met=$row[‘met’]; $tech=$row[‘tech’]; $hf=$row[‘humanfactors’]; $gyro=$row[‘gyro’]; $para=$row[‘para’]; $frto1=$row[‘frto1’]; $itc=$row[‘ITC’]; //class lookup $classresult = mysqli_query($conn,”SELECT * FROM class WHERE (cindex = ‘$class’) “); $row = mysqli_fetch_array($classresult); if (!empty($row)) { $class = $row[‘class’]; } //club lookup $clubresult = mysqli_query($conn,”SELECT * FROM clubs WHERE (clubid = ‘$club’) “); $row = mysqli_fetch_array($clubresult); if (!empty($row)) { $club = $row[‘clubname’]; } //certificate lookup $certresult = mysqli_query($conn,”SELECT * FROM certificate WHERE (cert = ‘$cert’) “); $row = mysqli_fetch_array($certresult); if (!empty($row)) { $cert = $row[‘type’]; } //instructor lookup $instresult = mysqli_query($conn,”SELECT * FROM members WHERE (number = ‘$inst’) “); $row = mysqli_fetch_array($instresult); if (!empty($row)) { $inst = $row[‘fullname’]; } //last reason lookup $lcresult = mysqli_query($conn,”SELECT * FROM contactreason WHERE (crindex = ‘$creason’) “); $row = mysqli_fetch_array($lcresult); if (!empty($row)) { $creason = $row[‘reason’]; } //contact log lookup $log = mysqli_query($conn,”SELECT contactlog.date, contactlog.notes, contactreason.reason FROM contactlog LEFT JOIN contactreason ON contactlog.reason=contactreason.crindex WHERE (member = {$_SESSION[‘pilotid’]}) ORDER BY date DESC “); //aircraft lookup $aircraft = mysqli_query($conn,”SELECT * FROM aircraft WHERE (member = {$_SESSION[‘pilotid’]}) “); } // if entry point is from update button if (isset($_POST[‘update’])) { //overlay database variables with user variables $pilotid=$_SESSION[‘pilotid’]; $pname=$_POST[‘pname’]; $pnick=$_POST[‘pnick’]; $add1=$_POST[‘add1’]; $add2=$_POST[‘add2’]; $add3=$_POST[‘add3’]; $pbirth=$_POST[‘pbirth’]; $phone=$_POST[‘phone’]; $pmail=$_POST[‘pmail’]; $newpw=$_POST[‘newpw’]; $confirm=$_POST[‘confirm’]; //and save to database mysqli_query($conn,”UPDATE members SET nickname=’$pnick’, address1=’$add1′, address2=’$add2′, address3=’$add3′, phone=’$phone’, email=’$pmail’ WHERE number=’$pilotid'”); //echo(“update: ” . mysqli_error($conn)); //clear pilotpw to stop rehashing it $pilotpw=null; //handle new password update if (!empty($newpw)) { if ($newpw==$confirm) { $pilotpw=$newpw; } else { echo(“New password and confirm do not match\n”); } } //migrate from plaintext to hashed password if (!empty($pilotpw)) { hashme($pilotid,$pilotpw); echo(“Upgrading to secure password\n”); } } // if entry point is from lost password…generate, send, hash new password if (!empty($_POST[‘lpass’])) { $pilotid=$_POST[‘pilotid’]; $result = mysqli_query($conn,”SELECT * FROM members WHERE (number = ‘$pilotid’) “); $row = mysqli_fetch_array($result); if (empty($row)) { echo(“Unknown Member number\n”); } elseif (empty($row[’email’])) { echo(“No email address for that Member\n”); } else { $newpw=generatePassword(8); hashme($pilotid,$newpw); mail($row[’email’],”New RAANZ database password”,”Your new RAANZ database password is $newpw \n From the RAANZ database”); echo(“Your password has been emailed to “.$row[’email’].”\n”); } } // if entry point is from auto generate password if (isset($_POST[‘generate’])) { $newpw=generatePassword(8); $confirm=$newpw; } ?> myRAANZ myRAANZ member page Pilot: Quick RAANZ links Home page FPP form Medical form Certificate chart Fees & services How to pay Quick external links Member personal data (some fields editable by member) Name Nickname Address 1 Birthdate Address 2 Phone Address 3 email New password Confirm Member record (not editable- contact RAANZ if any errors) Surname MetFlight password Club Member class Member expiry value=”=$expiry;?>” disabled> Receipt Last CMV Part 61 FRTO Total time Total micro Total last 12mth Certificate Groups Passenger rating Last BFR Next BFR value=”=$nextbfr;?>” disabled> Instructor ATO IA Test pilot Tow rating Water rating Appointments Last contact Reason Medical expiry value=”=$medexpiry;?>” disabled> Exams Law disabled> Nav disabled> Met disabled> Tech disabled> HF disabled> Gyro disabled> Para disabled> FRTO disabled> ITC disabled> Contact log (since May 2011) Date Reason Notes “; echo “” . $row[‘date’] . ““; echo “” . $row[‘reason’] . ““; echo “” . $row[‘notes’] . ““; echo ““; } ?> Aircraft record Rego Type Engine Prop Last FPV Last annual Next annual value=”=$nextannual;?>” disabled> IA TT T12mth Notes Annual Inspection log (since May 2011) Date Reason Notes “; echo “” . $acrow[‘date’] . ““; echo “” . $acrow[‘reason’] . ““; echo “” . $acrow[‘notes’] . ““; echo ““; } ?>