0

我有一个页面,允许用户注册定向日期和时间。我创建了错误检查来检查数据库中是否存在电子邮件地址。如果电子邮件地址确实存在,我会向学生发送一条错误消息:“您已经注册。您已注册(“orientation_student 表中的时间戳与他们用来注册的电子邮件相匹配”)。我的问题是:包含时间戳值的列有一个文本数据时间。我需要获取与电子邮件地址匹配的时间戳,并以如下格式返回:“Tuesday 10/02/2012”。时间部分有效,我只是可以t 让日期部分工作。我的 PHP 代码在下面。相关代码在代码中大约 50 行左右开始,在注释下方显示“// Jason McCoy 在 2012 年 10 月 5 日添加的代码”

PHP 代码

<?php
// set the mode
if(isset($_GET['p']))   $mode = $_GET['p'];
else if(isset($_POST['p'])) $mode = $_POST['p'];
else $mode = '';

// sanitize input
if(isset($_GET['time_id'])) {
    $timestamp = (int)$_GET['timestamp'];
    $time_id = (int)$_GET['time_id'];
}
if(isset($_POST['time_id'])) {
    $timestamp = (int)$_POST['timestamp'];
    $time_id = (int)$_POST['time_id'];
}

// validate input
$error = '';
if(date("G", $timestamp) != 0)
    $error .= 'Invalid timestamp.<br/>';
if(($time_result = valid_time_id($time_id)) == false)
    $error .= 'Invalid time id.<br/>';
else
    $time_row = mysql_fetch_array($time_result);

switch($mode) {
    default:
        break;

    case "schedule":
        // sanitize input
        $first_name = sanitize_input($_POST['first_name']);
        $last_name = sanitize_input($_POST['last_name']);
        $email = sanitize_input($_POST['email']);
        $retype_email = sanitize_input($_POST['retype_email']);
        $college_id = sanitize_input($_POST['college_id']);
        $retype_college_id = sanitize_input($_POST['retype_college_id']);
        $phone = sanitize_input($_POST['phone']);
        $first = (isset($_POST['first']) ? 1 : 0);
        $verification = $_POST['verification'];

        // validate input
        $error = '';
        if(empty($first_name))
            $error .= 'You must enter a first name.<br>';
        if(empty($last_name))
            $error .= 'You must enter a last name.<br>';
        if(!valid_email($email))
            $error .= 'Invalid email.<br>';
        if($email != $retype_email)
            $error .= 'The two email addresses don\'t match.<br>';
        // code added by Jason McCoy on October 5, 2012
        // code used to check if the email address already exists in the database
        // if email address exists, return an error message to the user
        // **** DISPLAY THE DATE AND TIME THAT THE STUDENT SIGNED UP FOR USING THIS EMAIL ADDRESS ****
        // **** THE STEP ABOVE HAS NOT BEEN COMPLETED AS OF OCT. 5TH, 2012 ****
         $student_result = db_query("select id, timestamp, time_id from orientation_student where email='".$email."'");
      if(mysql_num_rows($student_result) > 0) {
            $student_row = mysql_fetch_array($student_result);
            $date_result = db_query("select timestamp from orientation_student where email='".$email."'");
            $time_result = db_query("select time from orientation_time where id='".$student_row['time_id']."'");
            $time_row = mysql_fetch_array($time_result);
            $schedule_error .= 'You can only schedule an orientation once, and you are already scheduled for '
                .$formatted_date. ' at '.$time_row['time'].'. If you want to reschedule your test, '
                .'<a href="schedule.php?date='.$student_row['date'].'&time_id='.$student_row['time_id']
                .'">click here</a> to cancel the time you are scheduled for first.<br>';
            $error =. $schedule_error;
      }
        if(!valid_college_id($college_id))
            $error .= 'Invalid student id. Student id must contain seven digits including zeros.<br>';
        if($college_id != $retype_college_id)
            $error .= 'The two student ids don\'t match.<br>';
        if(empty($phone))
            $error .= 'You must enter a phone number.<br>';
        $student_result = db_query("select id from ".$GLOBALS['db_pre']."student where canceled='0' and timestamp='".$timestamp."' and time_id='".$time_id."'");
        if(mysql_num_rows($student_result) >= $time_row['slots'])
            $error .= 'Sorry, too many people are already scheduled for this time slot.<br>';
        if($_SESSION['captcha'] != $verification)
            $error .= 'Invalid image verification.<br>';

        // if there's no error
        if($error == '') {
            // schedule it
            db_query("insert into ".$GLOBALS['db_pre']."student set first_name='".$first_name
                ."',last_name='".$last_name
                ."',email='".$email
                ."',college_id='".$college_id
                ."',phone='".$phone
                ."',timestamp='".$timestamp
                ."',time_id='".$time_id
                ."',unschedule_code='".md5(time())
                ."',inserted_at='".gmdate("Y-m-d H:i:s")
                ."'");
            $student_id = mysql_insert_id();

            /* send email to student
            $subject = "A-B Tech New Student Appointment Confirmation";
            if(current_site() == "orientation") $subject = "A-B Tech New Student Orientation";
            else $subject = "A-B Tech Campus Tour";
            $message = format_text("Scheduling Email", $student_id);
            email($email, $subject, $message);
            */

            // get the start and end times for the appointment
            $time_result = db_query("select * from ".$GLOBALS['db_pre']."time where id='".$time_id."'");
            $time_row = mysql_fetch_array($time_result);
            //$timestamp_start = strtotime(date("F j, Y", $timestamp).", ".$time_row['time']);
            //$timestamp_end = strtotime("+1 hour", $timestamp_start);

            /*// send email, with calendar attachment, to counselors
            if(current_site() == "orientation") $subject = "A-B Tech New Student Orientation: ";
            else $subject = "A-B Tech Campus Tour: ";
            $subject .= date("F j, Y", $timestamp).", ".$time_row['time']."; ".$first_name." ".$last_name."";
            $message = "A student has scheduled an appointment:\r\n\r\n";
            $message .= "Name: ".$first_name." ".$last_name."\r\n";
            $message .= "Date: ".date("F j, Y", $timestamp).", ".$time_row['time']."\r\n";
            $message .= "Email: ".$email."\r\n";
            $message .= "Phone: ".$phone."\r\n";

            // send the email to all the counselors
            $user_result = db_query("select * from user where no_email=0");
            while($user_row = mysql_fetch_array($user_result)) {
                email($user_row['email'], $subject, $message);
            }*/
        }
        break;
}

// captcha image verification
srand(time());
$_SESSION['captcha'] = substr(md5(rand(1,9999)), rand(1,15), 5);
$_SESSION['captcha'] = str_replace("O", "1", $_SESSION['captcha']); // to avoid confusion
$_SESSION['captcha'] = str_replace("o", "2", $_SESSION['captcha']); // ...
$_SESSION['captcha'] = str_replace("0", "3", $_SESSION['captcha']); // ...

// the top layout
layout_top(date("F j, Y", $timestamp).', '.$time_row['time']);

// the middle layout
switch($mode) {
    default:
        if($mode == "schedule" && $error == "") {
            echo display_text("Scheduling Text", $student_id);
            ?><p><a href="index.php">Click here to go back</a></p><?php
        } else {
            ?>
            <h1 align="center" style="padding-bottom: 0; margin-bottom: 0;"><?=strtoupper(date("F j, Y", $timestamp).' '.$time_row['time'])?></h1>
            <p align="center" style="padding-top: 0; margin-top: 0;"><strong><a href="index.php?month=<?=date("n", $timestamp)?>&year=<?=date("Y", $timestamp)?>">choose another date</a></strong></p>

            <?php if($mode == "schedule" && $error != '') { ?>
            <p class="error"><?=$error?></p>
            <?php } ?>

            <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
            <input type="hidden" name="p" value="schedule">
            <input type="hidden" name="timestamp" value="<?=$timestamp?>">
            <input type="hidden" name="time_id" value="<?=$time_id?>">
            <fieldset>
            <legend>Schedule an appointment for this date</legend>
            <p>Fill out this form to schedule a New Student appointment on this date. Make sure you use a valid email address.</p>
            <ul>
                <li>
                    <label for="first_name">First Name</label>
                    <input type="text" name="first_name"<?=($mode == "schedule" ? ' value="'.$first_name.'"' : '')?>>
                </li>
                <li>
                    <label for="last_name">Last Name</label>
                    <input type="text" name="last_name"<?=($mode == "schedule" ? ' value="'.$last_name.'"' : '')?>>
                </li>
                <li>
                    <label for="email">Email</label>
                    <input type="text" name="email" size="30"<?=($mode == "schedule" ? ' value="'.$email.'"' : '')?>>
                </li>
                <li>
                    <label for="retype_email">Retype Email</label>
                    <input type="text" name="retype_email" size="30"<?=($mode == "schedule" ? ' value="'.$retype_email.'"' : '')?>>
                </li>
                <li>
                    <label for="college_id">Student ID(For your student ID#, please refer to the e-mail you received regarding your A-B Tech WebAdvisor and Email Accounts.)</label>
                    <input type="text" name="college_id" size="30"<?=($mode == "schedule" ? ' value="'.$college_id.'"' : '')?>>
                </li>
                <li>
                    <label for="retype_college_id">Retype Student ID</label>
                    <input type="text" name="retype_college_id" size="30"<?=($mode == "schedule" ? ' value="'.$retype_college_id.'"' : '')?>>
                </li>

                <li>
                    <label for="phone">Phone</label>
                    <input type="text" name="phone"<?=($mode == "schedule" ? ' value="'.$phone.'"' : '')?>>
                </li>
                <li>
                    <label for="verification">Verification</label>
                    <img src="../images/verify.php" width="180" height="40" alt="Verification"><br/>
                    <input type="text" name="verification" size="10"> <small>&laquo; type the characters in the image above into this box</small>
                </li>
                <li>
                    <input type="submit" value="Submit">
                </li>
            </ul>
            </fieldset>
            </form>
            <?php
        }
        break;
}

// the bottom layout
layout_bottom();
?>
4

1 回答 1

1

数据库中的时间戳看起来像 unix 秒,所以尝试:

$formatted_date=date("l, d/m/Y", $timestamp);

更多关于date()格式选项的信息

于 2012-10-05T22:47:49.810 回答