我是 PHP 新手,想了解表单验证是如何完成的。我能够根据此 post 中的注释验证表单字段并显示错误消息.
然而,header 函数会重定向页面,但不会将表单字段发布到下一页。如何将经过验证的表单值发布到下一页?
这是我的代码:
<!DOCTYPE HTML>
<html>
<head>
<title>PHP Learning</title>
</head>
<body>
<?PHP
$nameError = $emailError = "";
if($_SERVER['REQUEST_METHOD'] == "POST"){
$valid = true;
if(empty($_POST['name'])){
$valid=false;
$nameError = "Name missing";
}
if(empty($_POST['email'])){
$valid=false;
$emailError = "Email missing";
}
if($valid){
header('location:Processor.php');
exit();
}
}
?>
<form action="" method="post">
<input type="text" name="name" size="30"/> <?PHP echo $nameError; ?> <br>
<input type="text" name="email" size="30"/> <?PHP echo $emailError; ?> <br>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
处理器.php
<html>
<head>
<title>Online PHP Script Execution</title>
</head>
<body>
<?php
echo "<br>", "Name: ", $_POST['name'];
echo "<br>", "Email: ", $_POST['email'];
?>
</body>
</html>
最佳答案
header 函数用于重定向到不同的页面。它不会传递后变量。您可以通过使用 session 变量或使用 cookie 来实现。 对于表单前端验证,我建议使用 javascript(如果您愿意,可以使用 jQuery)。而仅将 php 用于后端验证。
如果非要用php做前端验证,就用session
php
session_start();
/* ---- Your other validation code -- */
if($valid){
$_SESSION['email'] = $_POST['email'];
$_SESSION['name'] = $_POST['name'];
header('location:Processor.php');
exit();
}
processor page :
<html>
<head>
<title>Online PHP Script Execution</title>
</head>
<body>
<?php
echo "<br>", "Name: ", $_SESSION['name'];
echo "<br>", "Email: ", $_SESSION['email'];
?>
</body>
</html>
使用js进行前端验证
<form action="Processor.php" method="post">
<input type="text" name="name" id="name" size="30"/> <?PHP echo $nameError; ?> <br>
<input type="text" name="email" id="email" size="30"/> <?PHP echo $emailError; ?> <br>
<input type="submit" value="Submit" id="submit"/>
</form>
JS:
$("#submit").click(function(){
var name = $("#name").val();
var email = $("#email").val();
if(name="" || email=""){
event.preventDefault();
alert("Please fill all the feilds");
}
});
关于PHP 表单验证并提交到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25820175/
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?