重定向后,如何显示来自原始文件的错误消息
After redirect, how to display error messages coming from original file?
以下是我试图实现的目标:如果发现我检查的任何错误,我希望将用户重定向到带有自定义错误消息的html.php表单(用户首先看到的是以前创建输入的表单)。
详细信息:用户首先看到的是HTML/PHP表单,他们在其中以csv格式输入名称。在他们单击create之后,名称将在php的另一个文件中进行处理,在该文件中检查名称的错误和其他类似内容。如果发现错误,我希望用户重定向到HTML/PHP表单,在那里他们可以修复错误,并显示相应的错误消息。一旦他们修复了名称,用户就可以点击"创建用户"按钮并再次进行处理(希望没有错误),完成后,将用户重定向到显示名称和诸如此类内容的页面。重定向发生在发送标头之后。从我所读到的来看,这不是最好的事情,但就目前而言,它对我来说是可行的
HTML/PHP表单代码:
<!DOCTYPE HTML>
<HTML>
<head>
<title>PHP FORM</title>
</head>
<body>
<form method="post" action="processForm.php">
Name: <input type="text" name="names" required = "required"><br>
<input type="submit" value="Create Users" onclick="formInputNames"><br>
Activate: <input type="checkbox" name="activate">
</form>
<?php
// include 'processForm.php';
// errorCheck($fullname,$nameSplit,$formInputNames);
?>
</body>
</html>
我试着摆弄"include",但它似乎没有任何作用,然而,我把它放在这里是为了帮助说明我试图实现的目标。
流程代码:
$formInputNames = $_POST['names'];
$active = (isset($_POST['activate'])) ? $_POST['activate'] : false;
//checks if activate checkbox is being used
$email = '@grabby.com';
echo "<br>";
echo "<br>";
$fullnames = explode(", ", $_POST['names']);
if ($active == true) {
$active = '1';
//sets activate checkbox to '1' if it has been selected
}
/*----------------------Function to Insert User---------------------------*/
A Function is here to place names and other fields in database.
/*-------------------------End Function to Insert User--------------------*/
/*-----------------------Function for Errors---------------------*/
function errorCheck($fullname,$nameSplit,$formInputNames){
if ($formInputNames == empty($fullname)){
echo 'Error: Name Missing Here: '.$fullname.'<br><br>';
redirect('form.php');
}
elseif ($formInputNames == empty($nameSplit[0])) {
echo 'Error: First Name Missing in: '.$fullname.'<br><br>';
redirect('form.php');
}
elseif ($formInputNames == empty($nameSplit[1])) {
echo 'Error: Last Name Missing in: '.$fullname.'<br><br>';
redirect('form.php');
}
elseif (preg_match('/[^A-Za-z, ]/', $fullname)) {
echo 'Error: Found Illegal Character in: '.$fullname.'<br><br>';
redirect('form.php');
}
}
/*-----------------------------End Function for Errors------------------------*/
/*--------------------------Function for Redirect-------------------------*/
function redirect($url){
$string = '<script type="text/javascript">';
$string .= 'window.location = "' .$url. '"';
$string .= '</script>';
echo $string;
}
/*-------------------------End Function for Redirect-----------------------*/
// Connect to database
I connect to the database here
foreach ($fullnames as $fullname) {
$nameSplit = explode(" ", $fullname);
//opens the database
I Open the database here
errorCheck($fullname,$nameSplit,$formInputNames);
$firstName = $nameSplit[0];//sets first part of name to first name
$lastName = $nameSplit[1];//sets second part of name to last name
$emailUser = $nameSplit[0].$email;//sets first part and adds email extension
newUser($firstName,$lastName,$emailUser,$active,$conn);
redirect('viewAll.php');
//echo '<META HTTP-EQUIV="Refresh" Content="0; URL=viewAll.php">';
//if you try this code out, you can see my redirect to viewAll doesn't work when errors are found...I would appreciate help fixing this as well. My immediate fix is using the line under it but I don't like it.
}
任何帮助我们都将不胜感激。谢谢
另外值得注意的是,我是php的新手。我也想在php中得到一个答案(如果可能的话)。
有多种方法可以做到这一点。我个人会使用AJAX。在"表单提交"中,运行一个javascript函数,调用对.php文件的AJAX请求来检查表单信息,所有这些都使用post方法。计算针对您定义的错误的所有$_POST['variables']
检查。您将有一个html元素通过AJAX请求打印错误。
如果有0个错误,那么在请求返回中返回一个字符串,这样您的javascript函数就可以查找它是否准备就绪。如果准备就绪,请将用户重定向到您希望的位置。
AJAX并不难,我只是建议你在标签中加入javascript。
另一种方法:将所有代码放在一个.php文件中。当您将表单提交到同一个.php文件时,请检查错误(在文件顶部)。如果$_POST['variables']存在(它们在您提交表单后会这样做),则会在所需的位置回显您的错误。如果没有错误,则重定向页面。
- markrwithlabel.js(第三方)原始文件链接断开
- 如何使用JavaScript粘贴原始二进制文件而不出现“无效字符”错误
- 如何在文件打开和调用图像区域选择时获取原始图像大小
- 如何在angular js中从github获取原始自述文件后将其转换为html格式的文档
- 保存对“;contentEditable;部分返回到原始HTML文件
- 如何将 Base64 文件转换为 javascript 中的实际文件/原始文件并将其下载到客户端
- 咕噜咕噜的丑陋 - 替换原始文件
- 当我克隆文件输入时,克隆的输入不会保留上传的文件.原始输入确实如此
- 拖放以克隆原始文件
- 重定向后,如何显示来自原始文件的错误消息
- Chrome中的错误:“;原始文件://不允许访问控制允许原始文件;
- 在不重命名原始文件的情况下吞下minify
- 使源映射引用远程计算机上的原始文件
- DataTransferItem.getAsFile()返回的文件大小比原始文件大得多
- 使用$http从服务器下载的原始文件创建Blob对象
- 将单个浏览器的js代码拆分成原始文件
- 在JSON对象中存储和发送原始文件数据
- 如何在脚本中获得原始文件路径与webpack
- 如何使Typescript文件在原始文件中而不是在“动态”选项卡中达到断点
- 如何调用一个文件,依赖于原始文件