如何使用PHP和PostgreSQL创建签入系统?

时间:2018-07-16 13:21:43

标签: php html database postgresql

我正在尝试使用PHP和PostgreSQL为一家旅馆创建签到系统,但我遇到了很多问题。首先,用户将输入签入以及签出日期,姓名和电子邮件地址,此后,我设法发送了一封电子邮件,其中包含他需要进行签入的代码,但事实是,当他单击该链接时该页面为空白,应该显示一条消息,然后在另一个页面上使用该代码进行登机(例如,email_registration进行验证,例如,如果他选择要4个房间,则每个房间都要进行登机)。如何显示该消息并使用生成的代码在登录页面上启动签入过程?这是注册页面:

<?php
    ob_start();
     $success = false;
    // Errors reporting, used if needed
    error_reporting(E_ALL);
    ini_set('display_errors', 'on');

    // General configuration like base, used if needed
    include_once ('include/config.inc.php');

    // Mail functions
    include_once ('include/mail.functions.php');

    // Start session if needed
    session_start();

    // DBConn
    include_once ('class/DB/DBConn.includeall.php');
    $db = new DBConn(NULL);

    // Includere clasa login
    require_once ('class/class_login.php');

    // Set up current language
    $lang = "ro";
    $_SESSION[PRE.'lang'] = $lang;

    $access = 0;

    // Check if the cookie for "remember me" exists
    if(isset($cookie_name))
    {
        if(isset($_COOKIE[$cookie_name]))
        {
            parse_str($_COOKIE[$cookie_name]);

            $login = new Login($db);
            if ($login->_checkLogin($usr, $hash) == true)
            {
                $access = 1;
            }

        }
    }


    $nume = (isset($_POST['nume']) && !empty($_POST['nume'])) ? $_POST['nume'] : "" ;
    $email = (isset($_POST['email']) && !empty($_POST['email'])) ? $_POST['email'] : "" ;
    $nrCamere = (isset($_POST['nrCamere']) && !empty($_POST['nrCamere'])) ? $_POST['nrCamere'] : "" ;
    $cod_activare = md5(rand());
    $email_status= 0;
    $checkin = (isset($_POST['checkin']) && !empty($_POST['checkin'])) ? $_POST['checkin'] : "" ;
    $checkout = (isset($_POST['checkout']) && !empty($_POST['checkout'])) ? $_POST['checkout'] : "" ;
    $nr_persoane = (isset($_POST['nr_persoane']) && !empty($_POST['nr_persoane'])) ? $_POST['nr_persoane'] : "" ;
    $db = pg_connect("host= port=5432 dbname=login_robinson user=robinson password=");
    $query = "INSERT INTO tregister(nume,email,cod_activare,email_status,nr_camere,data_checkin,data_checkout, nr_persoane) VALUES ('$nume','$email','$cod_activare','$email_status','$nrCamere','$checkin','$checkout','$nr_persoane')";
    $result = pg_query($query);
    if(isset($_POST['submit'])){
        $base_url = "http://dev.incorom.local/login-robinson/www/";
        $mail_body = "
        Buna ziua ".$_POST['nume'].",\n
        Multumim pentru inregistrare. Te rog deschide acest link pentru a incepe procesul de check-in pentru ".$nrCamere." camere si ".$nr_persoane." persoane - ".$base_url."email_verification.php?activation_code=".$cod_activare."
        Cod de rezervare: ".$cod_activare."
        Vei sta la noi incepand cu data de ".$checkin."  pana la ".$checkout."
    Cu stima,\n Hotel Amethyst
        ";
     $from = 'Activare rezervare';
     $subject = 'De pe site';
        if (mail ($email, $subject, $mail_body, $from)){

        }
        else{
            echo "<script>
     alert('S-a produs o eroare! Te rog mai verifica odata formularul!');
     </script>";
        }
        if($nume !=''&& $email !='')
        {
            $success=true;
        }

    }

?>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

    <head>
        <!-- <base href="http://dev.incorom.local/ticketing/www/login.php" /> -->
        <title>Inregistrare</title>
        <?php
            include('include/links.php');
            include('include/scripts.php');
        ?>

    </head>

    <body style="display: block !important;" ng-cloak="" ng-class="{ 'layout-fixed' : app.layout.isFixed, 'layout-boxed' : app.layout.isBoxed, 'layout-dock' : app.layout.isDocked, 'layout-material': app.layout.isMaterial, 'aside-offscreen' : app.sidebar.isOffscreen, 'aside-mini' : app.sidebar.isMini, 'aside-right' : app.sidebar.isRight, 'footer-hidden': app.footer.hidden, 'in-app': !$state.includes('page')}">

        <div class="animated fadeOutZoom">
            <div class="container container-sm animated fadeInDown">
                <div class="center-block mt-xl">
                    <img src="images/logo_iconlab.png" alt="Image" class="center-block img-rounded">
                    <div class="panel">
                        <div class="panel-body">
                            <p class="pv text-bold">Date necesare pentru a efectua inregistrarea in baza de date</p>
                            <form action="register.php" method="post">
                                <div class="row">
                                    <div class="col-md-12 form-group">
                                        <label for="nume">Nume</label>
                                        <input type="text" id="nume" class="form-control " name="nume" required>
                                    </div>
                                </div>
                                <div class="row">
                                        <div class="col-sm-6 form-group">

                                                <label for="">Data check-in</label>
                                                <div style="position: relative;">
                                                    <span class="fa fa-calendar icon" style="position: absolute; right: 10px; top: 10px;"></span>
                                                    <input type='text' class="form-control" id='arrival_date' name="checkin" required/>
                                                </div>
                                        </div>

                                        <div class="col-sm-6 form-group">

                                                <label for="">Data check-out</label>
                                                <div style="position: relative;">
                                                    <span class="fa fa-calendar icon" style="position: absolute; right: 10px; top: 10px;"></span>
                                                    <input type='text' class="form-control datepicker" id='departure_date'  data-date-format="mm/dd/yyyy" name="checkout" required/>
                                                </div>
                                        </div>

                                </div>


                                <div class="row">
                                    <div class="col-md-6 form-group">
                                        <label for="camere">Numar camere</label>
                                        <select name="nrCamere" id="nrCamere" class="form-control" required>
                                            <option value="" selected disabled hidden>Alege numarul de camere</option>
                                            <option value="1">1 camera</option>
                                            <option value="2">2 camere</option>
                                            <option value="3">3 camere</option>
                                            <option value="4">4 camere</option>
                                            <option value="5">5 camere</option>
                                        </select>
                                    </div>

                                    <div class="col-md-6 form-group">
                                        <label for="nrPersoane">Numar de persoane</label>
                                        <select name="nr_persoane" id="nrPersoane" class="form-control" required>
                                            <option value="" selected disabled hidden>Alege numarul de persoane</option>
                                            <option value="1">1 persoana</option>
                                            <option value="2">2 persoane</option>
                                            <option value="3">3 persoane</option>
                                            <option value="4">4 persoane</option>
                                            <option value="5">5+ persoane</option>
                                        </select>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-md-12 form-group">
                                        <label for="email">Email</label>
                                        <input type="email" id="email" class="form-control" name="email" required>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-md-6 form-group">
                                        <input type="submit" value="Rezerva acum" class="btn btn-primary name" name="submit">
                                    </div>
                                </div>
                            </form>
                        </div>

                    </div>
                </div>
            </div>
        </div>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.min.js"></script>

        <script>

            $('#arrival_date, #departure_date').datepicker({format: 'yyyy/mm/dd'});


        </script>


    </body>


</html>
<?php
ob_end_flush();
?>

这是他注册后将在电子邮件中看到的内容:email_activation

Email_verification.php:

<?php
ob_start();
 $success = false;
// Errors reporting, used if needed
error_reporting(E_ALL);
ini_set('display_errors', 'on');

// General configuration like base, used if needed
include_once ('include/config.inc.php');

// Mail functions
include_once ('include/mail.functions.php');

// Start session if needed
session_start();

// DBConn
include_once ('class/DB/DBConn.includeall.php');
$db = new DBConn(NULL);

// Includere clasa login
require_once ('class/class_login.php');

// Set up current language
$lang = "ro";
$_SESSION[PRE.'lang'] = $lang;
$message = '';

if(isset($_GET['cod_activare']))
{
 $query = "
  SELECT * FROM tregister
  WHERE cod_activare = :cod_activare
 ";
 $statement = $connect->prepare($query);
 $statement->execute(
  array(
   ':cod_activare'   => $_GET['cod_activare']
  )
 );
 $no_of_row = $statement->rowCount();

 if($no_of_row > 0)
 {
  $result = $statement->fetchAll();
  foreach($result as $row)
  {
   if($row['email_status'] == '0')
   {
    $update_query = "
    UPDATE tregister
    SET email_status = '1'
    WHERE id = '".$row['id']."'
    ";
    $statement = $connect->prepare($update_query);
    $statement->execute();
    $sub_result = $statement->fetchAll();
    if(isset($sub_result))
    {
     $message = '<label class="text-success">Email verificat cu success! <br />Poti efectua checkin-ul aici - <a href="login.php">Efectueaza check-in</a></label>';
    }
   }
   else
   {
    $message = '<label class="text-info">Adresa de mail deja verificata</label>';
   }
  }
 }
 else
 {
  $message = '<label class="text-danger">Link invalid</label>';
 }
}

?>
<!DOCTYPE html>
<html>
 <head>
  <title>Hotel Amethyst</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
 </head>
 <body>
   <h3><?php echo $message; ?></h3>
  </div>
 </body>

</html>
<?php
ob_end_flush();
?>

0 个答案:

没有答案