PHP表单提交,验证变量
我在一个问题上挂断了电话。我有一个html表单,没什么特别的。提交时,我需要验证提交的值,如果它们失败,我需要返回表单并指出错误。我以前做过很多次,但都是通过简单的数据验证,比如空白输入字段或电子邮件地址格式。这里有很多验证,当我返回到我的表单时,所有以前的输入都丢失了 以下是我到目前为止所拥有的(由于我一直在调整它,所以目前可能缺少一些东西,但你会明白的) index.phpPHP表单提交,验证变量,php,html,forms,Php,Html,Forms,我在一个问题上挂断了电话。我有一个html表单,没什么特别的。提交时,我需要验证提交的值,如果它们失败,我需要返回表单并指出错误。我以前做过很多次,但都是通过简单的数据验证,比如空白输入字段或电子邮件地址格式。这里有很多验证,当我返回到我的表单时,所有以前的输入都丢失了 以下是我到目前为止所拥有的(由于我一直在调整它,所以目前可能缺少一些东西,但你会明白的) index.php <div id="tabs-2"> <center><h1>Add
<div id="tabs-2">
<center><h1>Add Event Form:</h2></center>
<form name="htmlform" method="POST" action="htmlform.php">
<table>
<tr>
<td class="left"><label for="first_name">Event Name *</label></td>
<td><span><input type="text" name="event_name" value="<?PHP if(isset($_POST['event_name'])) echo htmlspecialchars($_POST['event_name']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event Date *</label></td>
<td><span><input id="datepicker" type="text" name="event_date" value="<?PHP if(isset($_POST['event_date'])) echo htmlspecialchars($_POST['event_date']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Start Time *</label></td>
<td>
<span>
<select name="start_time" value="<?PHP if(isset($_POST['start_time'])) echo ($_POST['start_time']); ?>" required />
<?php
foreach($times as $time){
echo '<option value="' . $time . '">' . $time . '</option>';
}
?>
</span>
</td>
</tr>
<tr>
<td class="left"><label for="first_name" >End Time *</label></td>
<td>
<span>
<select name="end_time" value="<?PHP if(isset($_POST['end_time'])) echo ($_POST['end_time']); ?>" required />
<?php
foreach($times as $time){
echo '<option value="' . $time . '">' . $time . '</option>';
}
?>
</span>
</td>
</tr>
<tr>
<td class="left"><label for="first_name">Venue Name *</label></td>
<td><span><input type="text" name="venue_name" value="<?PHP if(isset($_POST['venue_name'])) echo htmlspecialchars($_POST['venue_name']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Venue Address *</label></td>
<td><span><input type="text" name="venue_address" value="<?PHP if(isset($_POST['venue_address'])) echo htmlspecialchars($_POST['venue_address']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Description</label></td>
<td><span><textarea name="description" style="height: 150px; font-size: 13px;" value="<?PHP if(isset($_POST['description'])) echo htmlspecialchars($_POST['description']); ?>" required ></textarea></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event URL *</label></td>
<td><span><input type="text" name="event_url" value="<?PHP if(isset($_POST['event_url'])) echo htmlspecialchars($_POST['event_url']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event Image URL *</label></td>
<td><span><input type="text" name="event_image" value="<?PHP if(isset($_POST['event_image'])) echo htmlspecialchars($_POST['event_image']); ?>" required /></span></td>
</tr>
</table>
<p><input class="eventSub" type="submit" name="form_submit" value="Submit"></p>
<br/>
</form>
</div>
<?php
$event_name = $_POST['event_name'];
$event_date = $_POST['event_date'];
$start_time = $_POST['start_time'];
$end_time = $_POST['end_time'];
$venue_name = $_POST['venue_name'];
$venue_address = $_POST['venue_address'];
$description = $_POST['description'];
$event_url = filter_var($_POST['event_url'], FILTER_SANITIZE_URL);
$event_image = filter_var($_POST['event_image'], FILTER_SANITIZE_URL);
$start = strtotime($start_time);
$end = strtotime($end_time);
if (filter_var($event_url, FILTER_VALIDATE_URL) === false) {
//die(header("location:index.php?error=true&reason=url#tabs-2"));
}
if (filter_var($event_image, FILTER_VALIDATE_URL) === false) {
//die(header("location:index.php?error=true&reason=url#tabs-2"));
}
if ($end < $start){
$next_day_format = strtotime("+1 day", strtotime($event_date));
$next_day = date("Y-m-d", $next_day_format);
$json_start_time = $event_date . "T" . $start_time;
$json_end_time = $next_day . "T" . $end_time;
}
else {
$json_start_time = $event_date . "T" . $start_time;
$json_end_time = $event_date . "T" . $end_time;
}
$cityclean = str_replace (" ", "+", $venue_address);
$fullurl = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $cityclean . "&sensor=true";
$string = file_get_contents($fullurl);
$params = json_decode($string, true);
$lon = $params['results'][0]['geometry']['location']['lng'];
$address = substr($params['results'][0]['formatted_address'],0,-5);
$lat = $params['results'][0]['geometry']['location']['lat'];
$address_array = explode(',',$address);
$state_zip = trim($address_array[2]);
$sz_array = explode(' ',$state_zip);
$state = $sz_array[0];
$city = trim($address_array[1]);
$zip = $sz_array[1];
?>
<?php
$event_name = $event_date = $start_time = $end_time = $venue_name = $venue_address = $description = $event_url = $event_image = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//Checks if Event Name has been set
if(empty($_POST['event_name'])){
$error = 1;
$event_name_error_message = "Event Name Required";
}
else { $event_name = $_POST['event_name']; }
//Checks if an Event Date has been selected
if(empty($_POST['event_date'])) {
$error = 1;
$event_date_error_message = "Event Date Required";
}
else { $event_date = $_POST['event_date']; }
//Checks if a Venue Name has been set
if(empty($_POST['venue_name'])) {
$error = 1;
$venue_name_error_message = "Venue Name Required";
}
else { $venue_name = $_POST['venue_name']; }
//Checks if a Start Time has been selected
if(empty($_POST['start_time'])) {
$error = 1;
$start_time_error = "Start Time Required";
}
else { $start_time = $_POST['start_time']; }
//Checks if an End Time has been selected
if(empty($_POST['end_time'])) {
$error = 1;
$end_time_error = "End Time Required";
}
else { $end_time = $_POST['end_time']; }
//Checks if the Venue Address has been entered
if(empty($_POST['venue_address'])) {
$error = 1;
$venue_address_error_message = "Venue Address Required";
}
else { $venue_address = $_POST['venue_address']; }
//Checks if a Description has been entered
if(empty($_POST['description'])) {
$error = 1;
$description_error_message = "Event Description Required";
}
else { $description = $_POST['description']; }
//Check if an event URL has been entered. Second condition checks if the URL is properly formated
if(empty($_POST['event_url'])) {
$event_url_error = "URL Required";
$error = 1;
}
else {
$event_url = filter_var($_POST['event_url'], FILTER_SANITIZE_URL);
if (filter_var($event_url, FILTER_VALIDATE_URL) === false) {
$event_url_error = "Event URL not properly formatted!";
$error = 1;
}
}
//Check if an event image URL has been entered. Second condition checks if the URL is properly formated
if(empty($_POST['event_image'])) {
$event_image_error = "URL Required";
$error = 1;
}
else {
$event_image = filter_var($_POST['event_image'], FILTER_SANITIZE_URL);
if (filter_var($event_image, FILTER_VALIDATE_URL) === false) {
$event_image_error = "Event Image URL not properly formatted!";
$error = 1;
}
}
//Sets the end date to the following day if the end date time stamp is less than the start, assumes that an event which starts at 20:00 and ends at 02:00 has gone into the next day
if(!isset($error)){
//Converts the time stamps to a number which can be calculated
$start_time = $_POST['start_time'];
$end_time = $_POST['end_time'];
$start = strtotime($start_time);
$end = strtotime($end_time);
if ($end < $start or $end == $start){
$next_day_format = strtotime("+1 day", strtotime($event_date));
$next_day = date("Y-m-d", $next_day_format);
$json_start_time = $event_date . "T" . $start_time;
$json_end_time = $next_day . "T" . $end_time;
}
else {
$json_start_time = $event_date . "T" . $start_time;
$json_end_time = $event_date . "T" . $end_time;
}
//Fills in missing info from the google map api so that a pin can be placed on the map for the event
$cityclean = str_replace (" ", "+", $venue_address);
$fullurl = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $cityclean . "&sensor=true";
$string = file_get_contents($fullurl);
$params = json_decode($string, true);
$lon = $params['results'][0]['geometry']['location']['lng'];
$address = substr($params['results'][0]['formatted_address'],0,-5);
$lat = $params['results'][0]['geometry']['location']['lat'];
$address_array = explode(',',$address);
$state_zip = trim($address_array[2]);
$sz_array = explode(' ',$state_zip);
$state = $sz_array[0];
$city = trim($address_array[1]);
$zip = $sz_array[1];
echo "Lon - $lon<br/>";
echo "Name - $event_name<br/>";
echo "State - $state<br/>";
echo "Address - $address<br/>";
echo "Lat - $lat<br/>";
echo "City - $city<br/>";
echo "Zip - $zip<br/>";
echo "URL - $event_url<br/>";
echo "Image URL - $event_image<br/>";
echo "Start Time - $start_time<br/>";
echo "End Time - $end_time<br/>";
//Builds the completed json string which will then be submitted to the ant target
$complete_json_string = '{"results":[{"venue":{"lon":"' . $lon . '","name":"' . $venue_name . '","state":"' . $state . '","address":"' . $address .'","lat":"' . $lat . '","city":"' . $city . '","zip":"' . $zip . '"},"start_time":"' . $json_start_time . '","end_time":"' . $json_end_time . '","event_url":"' . $event_url . '","description":"' . $description . '","name":"' . $event_name . '","image_url":"' . $event_image . '"}]}';
echo $complete_json_string;
}
}
if (empty($_POST["comment"])) { $comment = ""; }
else {
$cleaned = test_input($_POST["comment"]);
$comment = ($_POST["comment"]);
}
function test_input($data) {
$data = trim($data);
$data = addslashes($data);
return $data;
}
$times=ARRAY('00:00:00','00:15:00','00:30:00','00:45:00','01:00:00','01:15:00','01:30:00','01:45:00','02:00:00','02:15:00','02:30:00','02:45:00','03:00:00','03:15:00','03:30:00','03:45:00','04:00:00','04:15:00','04:30:00','04:45:00','05:00:00','05:15:00','05:30:00','05:45:00','06:00:00','06:15:00','06:30:00','06:45:00','07:00:00','07:15:00','07:30:00','07:45:00','08:00:00','08:15:00','08:30:00','08:45:00','09:00:00','09:15:00','09:30:00','09:45:00','10:00:00','10:15:00','10:30:00','10:45:00','11:00:00','11:15:00','11:30:00','11:45:00','12:00:00','12:15:00','12:30:00','12:45:00','13:00:00','13:15:00','13:30:00','13:45:00','14:00:00','14:15:00','14:30:00','14:45:00','15:00:00','15:15:00','15:30:00','15:45:00','16:00:00','16:15:00','16:30:00','16:45:00','17:00:00','17:15:00','17:30:00','17:45:00','18:00:00','18:15:00','18:30:00','18:45:00','19:00:00','19:15:00','19:30:00','19:45:00','20:00:00','20:15:00','20:30:00','20:45:00','21:00:00','21:15:00','21:30:00','21:45:00','22:00:00','22:15:00','22:30:00','22:45:00','23:00:00','23:15:00','23:30:00','23:45:00','24:00:00');
session_start();
?>
<?php require('scripts/functions.php');?>
<html>
<head>
<link rel="stylesheet" href="css/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script src="scripts/jquery.js"></script>
<script src="scripts/jquery-ui.js"></script>
<script language="javascript">
function clearform() {
document.getElementById("json").value="";
}
</script>
<script>
$(function() {
$( "#tabs" ).tabs();
});
$(function() {
$( "#datepicker" ).datepicker({ dateFormat: 'yy-mm-dd' });
});
</script>
<title>Add Manual Event Data</title>
</head>
<body>
<div id="tabs" class="body-check">
<ul>
<li><a href="#tabs-1">Event By String</a></li>
<li><a href="#tabs-2">Add Event Form</a></li>
</ul>
<div id="tabs-1">
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<center><h1>Add Event Data:</h1></center>
<p>
<textarea id="json" name="comment"><?php echo $comment;?></textarea>
</p>
<input type="submit" name="submit" value="Submit">
</form>
<?php
if (isset($cleaned)){
$_SESSION['json_string'] = $cleaned;
echo '<div id="ant"><iframe src="scripts/ant.php"></iframe></div>';
}
?>
</div>
<div id="tabs-2">
<center><h1>Add Event Form:</h2></center>
<form name="htmlform" method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) . "#tabs-2";?>">
<table>
<tr>
<td class="left"><label for="first_name">Event Name *</label></td>
<td><span><input type="text" name="event_name" value="<?PHP if(isset($_POST['event_name'])) echo htmlspecialchars($_POST['event_name']); ?>" />
<?php if(isset($event_name_error_message)) echo "<span class='error'>$event_name_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event Date *</label></td>
<td><span><input id="datepicker" type="text" name="event_date" value="<?PHP if(isset($_POST['event_date'])) echo htmlspecialchars($_POST['event_date']); ?>" />
<?php if(isset($event_date_error_message)) echo "<span class='error'>$event_date_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Start Time *</label></td>
<td>
<span>
<select name="start_time">
<option value="<?php echo $start_time;?>"><?php if(isset($_POST['start_time'])) { echo htmlspecialchars($_POST['start_time']); }?></option>
<?php
foreach($times as $time){
echo '<option value="' . $time . '">' . $time . '</option>';
}
?>
</select>
<?php if(isset($start_time_error)) echo "<span class='error'>$start_time_error</span>"; ?>
</span>
</td>
</tr>
<tr>
<td class="left"><label for="first_name" >End Time *</label></td>
<td>
<span>
<select name="end_time">
<option value="<?php echo $end_time; ?>"><?PHP if(isset($_POST['end_time'])) { echo htmlspecialchars($_POST['end_time']); } ?></option>
<?php
foreach($times as $time){
echo '<option value="' . $time . '">' . $time . '</option>';
}
?>
</select>
<?php if(isset($end_time_error)) echo "<span class='error'>$end_time_error</span>"; ?>
</span>
</td>
</tr>
<tr>
<td class="left"><label for="first_name">Venue Name *</label></td>
<td><span><input type="text" name="venue_name" value="<?PHP if(isset($_POST['venue_name'])) echo htmlspecialchars($_POST['venue_name']); ?>" />
<?php if(isset($venue_name_error_message)) echo "<span class='error'>$venue_name_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Venue Address *</label></td>
<td><span><input type="text" name="venue_address" value="<?PHP if(isset($_POST['venue_address'])) echo htmlspecialchars($_POST['venue_address']); ?>" />
<?php if(isset($venue_address_error_message)) echo "<span class='error'>$venue_address_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Description</label></td>
<td><span><textarea name="description" style="height: 150px; font-size: 13px;" ><?php if(isset($_POST['description'])) echo htmlspecialchars($_POST['description']); ?></textarea>
<?php if(isset($description_error_message)) echo "<span class='error'>$description_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event URL *</label></td>
<td><span><input type="text" name="event_url" value="<?php if(isset($_POST['event_url'])) echo htmlspecialchars($_POST['event_url']);?>" />
<?php if(isset($event_url_error)) echo "<span class='error'>$event_url_error</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event Image URL *</label></td>
<td><span><input type="text" name="event_image" value="<?PHP if(isset($_POST['event_image'])) echo htmlspecialchars($_POST['event_image']); ?>" />
<?php if(isset($event_image_error)) echo "<span class='error'>$event_image_error</span>"; ?>
</span></td>
</tr>
</table>
<p><input class="eventSub" type="submit" name="form_submit" value="Submit"></p>
<br/>
</form>
</div>
</div>
</body>
</html>
添加事件表单:
事件名称*
结束时间*
场馆名称*
它还没有完全完成。理想的情况是,一旦验证了所有字段,就会将提交发送到json格式的字符串
问题是,如果验证失败,我想重新加载表单提交的前一页,但保留所有输入的值,现在当它出错并重新加载页面时,表单是空的。看起来问题在于表单操作是htmlform.php,因此,当您提交要发布到该PHP文件的表单时。这意味着index.PHP中尝试回显这些变量的PHP(例如,
echo htmlspecialchars($\u POST['event\u name']
)根本无法访问它们
你有两个选择
- 您可以将表单处理逻辑从htmlform.php移到index.php。然后您可以访问
数组,以重新填充表单字段并显示错误$\u POST
- 您可以使用AJAX将index.php中表单字段中的值发布到htmlform.php,然后解析响应(可能使用JSON)以按表单字段添加错误消息,同时仍保留用户的输入。web上有许多有用的教程可帮助您做到这一点
触发表单,表单将被提交
这里有一些简单的代码
<script>
$("#form_submit").click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "yourBackendFile.phps"
data: $('#form').serialize(); //add an 'id' attribute to your form with id = "form"
}).done(function( msg ) {
if(msg == 1)
{
//echo 1 from the php script if everything's fine.
$("#form").trigger("submit"); //submit the form now
}
else
{
//show the 'msg' somewhere. Now this msg would contain all the errors that the php generated.
}
});
});
</script>
$(“#表格提交”)。点击(功能(e){
e、 预防默认值();
$.ajax({
类型:“POST”,
url:“yourBackendFile.phps”
数据:$(“#form”).serialize();//使用id=“form”向表单添加“id”属性
}).done(函数(msg){
如果(msg==1)
{
//如果一切正常,则从php脚本返回1。
$(“#表单”).trigger(“submit”);//立即提交表单
}
其他的
{
//在某处显示“msg”。现在,此msg将包含php生成的所有错误。
}
});
});
更新:
我不知道为什么这件事让我难堪了这么久,我就是这样完成了我想做的事情
functions.php
<div id="tabs-2">
<center><h1>Add Event Form:</h2></center>
<form name="htmlform" method="POST" action="htmlform.php">
<table>
<tr>
<td class="left"><label for="first_name">Event Name *</label></td>
<td><span><input type="text" name="event_name" value="<?PHP if(isset($_POST['event_name'])) echo htmlspecialchars($_POST['event_name']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event Date *</label></td>
<td><span><input id="datepicker" type="text" name="event_date" value="<?PHP if(isset($_POST['event_date'])) echo htmlspecialchars($_POST['event_date']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Start Time *</label></td>
<td>
<span>
<select name="start_time" value="<?PHP if(isset($_POST['start_time'])) echo ($_POST['start_time']); ?>" required />
<?php
foreach($times as $time){
echo '<option value="' . $time . '">' . $time . '</option>';
}
?>
</span>
</td>
</tr>
<tr>
<td class="left"><label for="first_name" >End Time *</label></td>
<td>
<span>
<select name="end_time" value="<?PHP if(isset($_POST['end_time'])) echo ($_POST['end_time']); ?>" required />
<?php
foreach($times as $time){
echo '<option value="' . $time . '">' . $time . '</option>';
}
?>
</span>
</td>
</tr>
<tr>
<td class="left"><label for="first_name">Venue Name *</label></td>
<td><span><input type="text" name="venue_name" value="<?PHP if(isset($_POST['venue_name'])) echo htmlspecialchars($_POST['venue_name']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Venue Address *</label></td>
<td><span><input type="text" name="venue_address" value="<?PHP if(isset($_POST['venue_address'])) echo htmlspecialchars($_POST['venue_address']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Description</label></td>
<td><span><textarea name="description" style="height: 150px; font-size: 13px;" value="<?PHP if(isset($_POST['description'])) echo htmlspecialchars($_POST['description']); ?>" required ></textarea></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event URL *</label></td>
<td><span><input type="text" name="event_url" value="<?PHP if(isset($_POST['event_url'])) echo htmlspecialchars($_POST['event_url']); ?>" required /></span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event Image URL *</label></td>
<td><span><input type="text" name="event_image" value="<?PHP if(isset($_POST['event_image'])) echo htmlspecialchars($_POST['event_image']); ?>" required /></span></td>
</tr>
</table>
<p><input class="eventSub" type="submit" name="form_submit" value="Submit"></p>
<br/>
</form>
</div>
<?php
$event_name = $_POST['event_name'];
$event_date = $_POST['event_date'];
$start_time = $_POST['start_time'];
$end_time = $_POST['end_time'];
$venue_name = $_POST['venue_name'];
$venue_address = $_POST['venue_address'];
$description = $_POST['description'];
$event_url = filter_var($_POST['event_url'], FILTER_SANITIZE_URL);
$event_image = filter_var($_POST['event_image'], FILTER_SANITIZE_URL);
$start = strtotime($start_time);
$end = strtotime($end_time);
if (filter_var($event_url, FILTER_VALIDATE_URL) === false) {
//die(header("location:index.php?error=true&reason=url#tabs-2"));
}
if (filter_var($event_image, FILTER_VALIDATE_URL) === false) {
//die(header("location:index.php?error=true&reason=url#tabs-2"));
}
if ($end < $start){
$next_day_format = strtotime("+1 day", strtotime($event_date));
$next_day = date("Y-m-d", $next_day_format);
$json_start_time = $event_date . "T" . $start_time;
$json_end_time = $next_day . "T" . $end_time;
}
else {
$json_start_time = $event_date . "T" . $start_time;
$json_end_time = $event_date . "T" . $end_time;
}
$cityclean = str_replace (" ", "+", $venue_address);
$fullurl = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $cityclean . "&sensor=true";
$string = file_get_contents($fullurl);
$params = json_decode($string, true);
$lon = $params['results'][0]['geometry']['location']['lng'];
$address = substr($params['results'][0]['formatted_address'],0,-5);
$lat = $params['results'][0]['geometry']['location']['lat'];
$address_array = explode(',',$address);
$state_zip = trim($address_array[2]);
$sz_array = explode(' ',$state_zip);
$state = $sz_array[0];
$city = trim($address_array[1]);
$zip = $sz_array[1];
?>
<?php
$event_name = $event_date = $start_time = $end_time = $venue_name = $venue_address = $description = $event_url = $event_image = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//Checks if Event Name has been set
if(empty($_POST['event_name'])){
$error = 1;
$event_name_error_message = "Event Name Required";
}
else { $event_name = $_POST['event_name']; }
//Checks if an Event Date has been selected
if(empty($_POST['event_date'])) {
$error = 1;
$event_date_error_message = "Event Date Required";
}
else { $event_date = $_POST['event_date']; }
//Checks if a Venue Name has been set
if(empty($_POST['venue_name'])) {
$error = 1;
$venue_name_error_message = "Venue Name Required";
}
else { $venue_name = $_POST['venue_name']; }
//Checks if a Start Time has been selected
if(empty($_POST['start_time'])) {
$error = 1;
$start_time_error = "Start Time Required";
}
else { $start_time = $_POST['start_time']; }
//Checks if an End Time has been selected
if(empty($_POST['end_time'])) {
$error = 1;
$end_time_error = "End Time Required";
}
else { $end_time = $_POST['end_time']; }
//Checks if the Venue Address has been entered
if(empty($_POST['venue_address'])) {
$error = 1;
$venue_address_error_message = "Venue Address Required";
}
else { $venue_address = $_POST['venue_address']; }
//Checks if a Description has been entered
if(empty($_POST['description'])) {
$error = 1;
$description_error_message = "Event Description Required";
}
else { $description = $_POST['description']; }
//Check if an event URL has been entered. Second condition checks if the URL is properly formated
if(empty($_POST['event_url'])) {
$event_url_error = "URL Required";
$error = 1;
}
else {
$event_url = filter_var($_POST['event_url'], FILTER_SANITIZE_URL);
if (filter_var($event_url, FILTER_VALIDATE_URL) === false) {
$event_url_error = "Event URL not properly formatted!";
$error = 1;
}
}
//Check if an event image URL has been entered. Second condition checks if the URL is properly formated
if(empty($_POST['event_image'])) {
$event_image_error = "URL Required";
$error = 1;
}
else {
$event_image = filter_var($_POST['event_image'], FILTER_SANITIZE_URL);
if (filter_var($event_image, FILTER_VALIDATE_URL) === false) {
$event_image_error = "Event Image URL not properly formatted!";
$error = 1;
}
}
//Sets the end date to the following day if the end date time stamp is less than the start, assumes that an event which starts at 20:00 and ends at 02:00 has gone into the next day
if(!isset($error)){
//Converts the time stamps to a number which can be calculated
$start_time = $_POST['start_time'];
$end_time = $_POST['end_time'];
$start = strtotime($start_time);
$end = strtotime($end_time);
if ($end < $start or $end == $start){
$next_day_format = strtotime("+1 day", strtotime($event_date));
$next_day = date("Y-m-d", $next_day_format);
$json_start_time = $event_date . "T" . $start_time;
$json_end_time = $next_day . "T" . $end_time;
}
else {
$json_start_time = $event_date . "T" . $start_time;
$json_end_time = $event_date . "T" . $end_time;
}
//Fills in missing info from the google map api so that a pin can be placed on the map for the event
$cityclean = str_replace (" ", "+", $venue_address);
$fullurl = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $cityclean . "&sensor=true";
$string = file_get_contents($fullurl);
$params = json_decode($string, true);
$lon = $params['results'][0]['geometry']['location']['lng'];
$address = substr($params['results'][0]['formatted_address'],0,-5);
$lat = $params['results'][0]['geometry']['location']['lat'];
$address_array = explode(',',$address);
$state_zip = trim($address_array[2]);
$sz_array = explode(' ',$state_zip);
$state = $sz_array[0];
$city = trim($address_array[1]);
$zip = $sz_array[1];
echo "Lon - $lon<br/>";
echo "Name - $event_name<br/>";
echo "State - $state<br/>";
echo "Address - $address<br/>";
echo "Lat - $lat<br/>";
echo "City - $city<br/>";
echo "Zip - $zip<br/>";
echo "URL - $event_url<br/>";
echo "Image URL - $event_image<br/>";
echo "Start Time - $start_time<br/>";
echo "End Time - $end_time<br/>";
//Builds the completed json string which will then be submitted to the ant target
$complete_json_string = '{"results":[{"venue":{"lon":"' . $lon . '","name":"' . $venue_name . '","state":"' . $state . '","address":"' . $address .'","lat":"' . $lat . '","city":"' . $city . '","zip":"' . $zip . '"},"start_time":"' . $json_start_time . '","end_time":"' . $json_end_time . '","event_url":"' . $event_url . '","description":"' . $description . '","name":"' . $event_name . '","image_url":"' . $event_image . '"}]}';
echo $complete_json_string;
}
}
if (empty($_POST["comment"])) { $comment = ""; }
else {
$cleaned = test_input($_POST["comment"]);
$comment = ($_POST["comment"]);
}
function test_input($data) {
$data = trim($data);
$data = addslashes($data);
return $data;
}
$times=ARRAY('00:00:00','00:15:00','00:30:00','00:45:00','01:00:00','01:15:00','01:30:00','01:45:00','02:00:00','02:15:00','02:30:00','02:45:00','03:00:00','03:15:00','03:30:00','03:45:00','04:00:00','04:15:00','04:30:00','04:45:00','05:00:00','05:15:00','05:30:00','05:45:00','06:00:00','06:15:00','06:30:00','06:45:00','07:00:00','07:15:00','07:30:00','07:45:00','08:00:00','08:15:00','08:30:00','08:45:00','09:00:00','09:15:00','09:30:00','09:45:00','10:00:00','10:15:00','10:30:00','10:45:00','11:00:00','11:15:00','11:30:00','11:45:00','12:00:00','12:15:00','12:30:00','12:45:00','13:00:00','13:15:00','13:30:00','13:45:00','14:00:00','14:15:00','14:30:00','14:45:00','15:00:00','15:15:00','15:30:00','15:45:00','16:00:00','16:15:00','16:30:00','16:45:00','17:00:00','17:15:00','17:30:00','17:45:00','18:00:00','18:15:00','18:30:00','18:45:00','19:00:00','19:15:00','19:30:00','19:45:00','20:00:00','20:15:00','20:30:00','20:45:00','21:00:00','21:15:00','21:30:00','21:45:00','22:00:00','22:15:00','22:30:00','22:45:00','23:00:00','23:15:00','23:30:00','23:45:00','24:00:00');
session_start();
?>
<?php require('scripts/functions.php');?>
<html>
<head>
<link rel="stylesheet" href="css/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script src="scripts/jquery.js"></script>
<script src="scripts/jquery-ui.js"></script>
<script language="javascript">
function clearform() {
document.getElementById("json").value="";
}
</script>
<script>
$(function() {
$( "#tabs" ).tabs();
});
$(function() {
$( "#datepicker" ).datepicker({ dateFormat: 'yy-mm-dd' });
});
</script>
<title>Add Manual Event Data</title>
</head>
<body>
<div id="tabs" class="body-check">
<ul>
<li><a href="#tabs-1">Event By String</a></li>
<li><a href="#tabs-2">Add Event Form</a></li>
</ul>
<div id="tabs-1">
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<center><h1>Add Event Data:</h1></center>
<p>
<textarea id="json" name="comment"><?php echo $comment;?></textarea>
</p>
<input type="submit" name="submit" value="Submit">
</form>
<?php
if (isset($cleaned)){
$_SESSION['json_string'] = $cleaned;
echo '<div id="ant"><iframe src="scripts/ant.php"></iframe></div>';
}
?>
</div>
<div id="tabs-2">
<center><h1>Add Event Form:</h2></center>
<form name="htmlform" method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) . "#tabs-2";?>">
<table>
<tr>
<td class="left"><label for="first_name">Event Name *</label></td>
<td><span><input type="text" name="event_name" value="<?PHP if(isset($_POST['event_name'])) echo htmlspecialchars($_POST['event_name']); ?>" />
<?php if(isset($event_name_error_message)) echo "<span class='error'>$event_name_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event Date *</label></td>
<td><span><input id="datepicker" type="text" name="event_date" value="<?PHP if(isset($_POST['event_date'])) echo htmlspecialchars($_POST['event_date']); ?>" />
<?php if(isset($event_date_error_message)) echo "<span class='error'>$event_date_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Start Time *</label></td>
<td>
<span>
<select name="start_time">
<option value="<?php echo $start_time;?>"><?php if(isset($_POST['start_time'])) { echo htmlspecialchars($_POST['start_time']); }?></option>
<?php
foreach($times as $time){
echo '<option value="' . $time . '">' . $time . '</option>';
}
?>
</select>
<?php if(isset($start_time_error)) echo "<span class='error'>$start_time_error</span>"; ?>
</span>
</td>
</tr>
<tr>
<td class="left"><label for="first_name" >End Time *</label></td>
<td>
<span>
<select name="end_time">
<option value="<?php echo $end_time; ?>"><?PHP if(isset($_POST['end_time'])) { echo htmlspecialchars($_POST['end_time']); } ?></option>
<?php
foreach($times as $time){
echo '<option value="' . $time . '">' . $time . '</option>';
}
?>
</select>
<?php if(isset($end_time_error)) echo "<span class='error'>$end_time_error</span>"; ?>
</span>
</td>
</tr>
<tr>
<td class="left"><label for="first_name">Venue Name *</label></td>
<td><span><input type="text" name="venue_name" value="<?PHP if(isset($_POST['venue_name'])) echo htmlspecialchars($_POST['venue_name']); ?>" />
<?php if(isset($venue_name_error_message)) echo "<span class='error'>$venue_name_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Venue Address *</label></td>
<td><span><input type="text" name="venue_address" value="<?PHP if(isset($_POST['venue_address'])) echo htmlspecialchars($_POST['venue_address']); ?>" />
<?php if(isset($venue_address_error_message)) echo "<span class='error'>$venue_address_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Description</label></td>
<td><span><textarea name="description" style="height: 150px; font-size: 13px;" ><?php if(isset($_POST['description'])) echo htmlspecialchars($_POST['description']); ?></textarea>
<?php if(isset($description_error_message)) echo "<span class='error'>$description_error_message</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event URL *</label></td>
<td><span><input type="text" name="event_url" value="<?php if(isset($_POST['event_url'])) echo htmlspecialchars($_POST['event_url']);?>" />
<?php if(isset($event_url_error)) echo "<span class='error'>$event_url_error</span>"; ?>
</span></td>
</tr>
<tr>
<td class="left"><label for="first_name">Event Image URL *</label></td>
<td><span><input type="text" name="event_image" value="<?PHP if(isset($_POST['event_image'])) echo htmlspecialchars($_POST['event_image']); ?>" />
<?php if(isset($event_image_error)) echo "<span class='error'>$event_image_error</span>"; ?>
</span></td>
</tr>
</table>
<p><input class="eventSub" type="submit" name="form_submit" value="Submit"></p>
<br/>
</form>
</div>
</div>
</body>
</html>
问题是什么?我在结尾添加了一个更明确的问题,很抱歉“这里有很多验证,当我返回表单时,它丢失了以前的所有输入”-您可以执行jQuery ajax post,而不会丢失输入框中的值组合到一个页面上,然后变量将发布到self,如果需要,可以再次显示一个旁注——您可以使用PHP5.4.0中的
来代替
,还有更好的方法吗?我应该创建会话吗?或者直接将代码放入index.php?抱歉,只是进一步澄清了我的回答-在没有足够声誉的评论中无法正确讨论问题!是的,我整天都在看教程,这就是我寻求帮助的原因。我还将研究Ajax路线。谢谢,不用担心。这是一个关于在联系人表单中使用AJAX的相当简洁的教程,应该可以让您开始学习。因此,使用这种方法,一旦脚本没有错误并提交,我就可以开始提交操作了?我想是这样的,但Ajax对我来说还是个新鲜事物。Thanks@EdDunn是的,没错。php后端脚本验证数据的正确性,如果一切正常,则返回1
,或者返回存储在msg
变量中的错误。现在,如果响应是1
,那么您将触发函数的提交,否则,显示错误。天哪,为什么不使用ajax呢?