如果跟踪 ID 错误或无效,我如何显示错误消息或将用户重定向到页面

How do i display a error message or redirect a user to a page if tracking id is wrong or invalid

如果输入的跟踪编号错误或未在数据库中存在,我如何显示错误消息或将用户重定向到页面。

我有一个表单,用户可以在其中输入跟踪代码,表单通过 post 发送到 php 跟踪页面。我想 return 用户在输入的跟踪号码错误时返回表单页面并显示错误消息。这是我的代码,谢谢。

<?php
    if(isset($_POST['trackid']))
    
    
    
?>
<?php
        
        $sql_query="SELECT * FROM tracking WHERE t_number=".$_POST['trackid'];
        $result_set=mysqli_query($conn,$sql_query);
        $fetched_row=mysqli_fetch_array($result_set,MYSQLI_ASSOC);
    ?>


<section class="quote-section"> 
                <div class="auto-container">
                    <h2 class="text-center text-danger">Tracking Number #: <span class="text-success">SS-<?php echo $fetched_row['t_number'] ?></span></h2> 
                    <div class="quote-form-box"> 
                        <!--Login Form-->                         
                        <form method="post" action="contact.html"> 
                            <script type="text/javascript"></script>
 
<section class="quote-section"> 
    <div class="auto-container"> 
        <div class="quote-form-box"> 
            <!--tracking Form-->             
        </div>
        <article class="card">
            <header class="card-header">
                <div class="bg-success border-success shadow ticker-wrapper-h">
                    <div class="heading"><span class="fa fa-bullhorn icon"></span>
                    </div>
                    <ul class="news-ticker-h">
                        <li class="font-weight-normal text-light">
                            <?php echo $fetched_row['marquee'] ?>
                        </li>
                    </ul>
                </div>
            </header>
            <div class="card-body">
                <h6>Tracking ID: SS-<?php echo $fetched_row['t_number'] ?></h6>
                <article class="card">
                    <div class="card-body row">
                        <div class="col"> <strong>Estimated Delivery time:</strong> <br/>
                            <?php echo $fetched_row['date'] ?>
                        </div>
                        <div class="col"> <strong>Shipping BY:</strong> <br/> 
                            <?php echo $fetched_row['c_name'] ?>, | <i class="fa fa-phone"></i> 
                            <?php echo $fetched_row['c_number'] ?> 
                        </div>
                        <div class="col"> <strong>Status:</strong> <br/> 
                            <?php echo $fetched_row['t_status'] ?> 
                        </div>
                        <div class="col"> <strong>Tracking #:</strong> <br/> 
                        SS-<?php echo $fetched_row['t_number'] ?> 
                        </div>
                    </div>
                </article>
            

您可以用 session 来做到这一点。像这样更改代码的开头:

<?php
    if(isset($_POST['trackid'])) {
        $sql_query="SELECT * FROM tracking WHERE t_number=".$_POST['trackid'];
        $result_set=mysqli_query($conn,$sql_query);
        $fetched_row=mysqli_fetch_array($result_set, MYSQLI_ASSOC);
        if (mysqli_num_rows($result_set) === 0) {
           header('Location: <your form link here>'); 
           session_start();
           $_SESSION['error'] = 'Error message';
           exit;
        }   
     }
?>

因此在您的表单页面中添加:

<?php
    session_start();
    if (isset($_SESSION['error'])) {
        echo $_SESSION['error'];
        unset($_SESSION['error']);
    }
?>

基本上,在您的视图页面上,正在检查查询中是否有任何行的 return,如果没有,它会执行以下操作:

  • 添加一个header重定向到表单页面;
  • 开始 session;
  • 将错误信息保存在session变量中;
  • 关闭脚本。

您的表单页面上发生了以下情况:

  • session 开始;
  • 检查带有错误消息的密钥是否存在;
  • 如果它存在,它会显示一条消息并删除 session 变量索引。