Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表单验证和表单操作不起作用_Php_Codeigniter_Validation - Fatal编程技术网

Php 表单验证和表单操作不起作用

Php 表单验证和表单操作不起作用,php,codeigniter,validation,Php,Codeigniter,Validation,我有一张收集用户数据的登记表, 姓名、姓氏、电子邮件等,并将其发送到电子邮件。 然而,验证似乎不起作用 我的问题是,当用户单击submit时,即使没有 键入任何内容后,页面将重定向到表单操作脚本页面,而不是仅在该页面中执行脚本 欢迎任何帮助。 迈克 表格: <?php echo form_open('viewer_registration_email/signup_validation'); echo validation_errors(); $name_data = ar

我有一张收集用户数据的登记表, 姓名、姓氏、电子邮件等,并将其发送到电子邮件。 然而,验证似乎不起作用

我的问题是,当用户单击submit时,即使没有 键入任何内容后,页面将重定向到表单操作脚本页面,而不是仅在该页面中执行脚本

欢迎任何帮助。 迈克

表格:

  <?php
echo form_open('viewer_registration_email/signup_validation');


echo validation_errors();
    $name_data = array( 
    'name' => 'viewerFirstName',
    'id'   => 'viewerFirstName',
    'value'  => $this->input->post('viewerFirstName'),
    'placeholder' =>"  First Name",
    'class'  => 'customInputFieldSmallHome'
);

$email_data = array(
    'name' => 'viewerEmail',
    'id'   => 'viewerEmail',
    'value'  => $this->input->post('viewerEmail'),
    'placeholder' =>"  Your Email", 
    'class'  => 'customInputFieldHome'
);

echo form_hidden('submit_viewer', 1);
echo '<span style="float:left">';
echo form_input($name_data);
echo '</span><br>';
echo form_input($email_data);

echo form_submit("submit", "", 'class="signUpBtn"');

echo form_close();
?>

控制员:

<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Viewer_registration_email extends CI_Controller {
    public function index()
    {
    }
    public function signup_validation()
    {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('viewerFirstName','First Name','required|trim');
        $this->form_validation->set_rules('viewerEmail','Email','required|trim|valid_email');
        if($this->form_validation->run())
        {
            $this->load->library('email', array('mailtype' => 'html'));
            $this->email->from('register@mysite.com','My site Registration');
            $this->email->to('mike@mysite.com');
            $this->email->subject('New registered user');
            $birthday = $this->input->post('viewerBirthDay')."/".$this->input->post('viewerBirthMonth') ."/".
            $this->input->post('viewerBirthYear');
            $message = '<div style="width:100%; height:35px; background-color:#558F61;"></div>
                        <br><br><br>
                        <h1>  A new user has registered as a <span style="font-weight:bold">Viewer</span> on Your website.</h1>
                        <br><br><br>
                        <table style="border:none">
                            <tr>
                                <td>
                                    <span style="font-weight:bold">Name: </span>
                                </td>
                                <td>
                                    '.$this->input->post('viewerFirstName').'
                                </td>
                            </tr>
                            <tr>
                                <td>
                                  <span style="font-weight:bold">Last name: </span>
                                </td>
                                <td>
                                    '.$this->input->post('viewerLastName').'
                                </td>
                            </tr>   
                                <tr>
                                <td>
                                 <span style="font-weight:bold">Email: </span>
                                </td>
                                <td>
                                    '.$this->input->post('viewerEmail').'
                                </td>
                            </tr>
                        </table>    
                        <br><br><br><br>
                        <div style="width:100%; height:35px; background-color:#558F61;"></div>';
            $this->email->message($message);
            //send email to user
            if($this->email->send()){
                //echo "Email has been sent.";
                $this->load->view('confirm_registration_email');
            }else{
                echo 'email failed!';
            }
        }else{
            $this->load->view('home_main');
        }
    }
}

显然问题出在我的主机服务设置上。使用戈达迪。我发现
解决方案如下:

谢谢你的回复


Mike

我忘了说url改为:“查看器\注册\电子邮件/注册\验证”,页面为空白。即使在字段中输入数据,也会发生同样的情况,因此我猜测验证失败,因为它似乎不存在。表单的操作是
viewer\u registration/signup\u validation
,但控制器名称是
viewer\u registration\u email
。这是一个输入错误吗?这只是一个输入错误,它们都是“查看器\注册\电子邮件”。当我在测试站点上尝试时,您的代码似乎工作正常。提交带有空字段或其他无效信息的表单时,会再次显示表单,并显示错误
,需要名字字段。电子邮件字段必须包含有效的电子邮件地址。
如果我提交了有效信息,它将尝试发送电子邮件。这是正确的吗?如果是这样的话,我认为您有其他代码没有在上面发布,这会干扰它。现在我得到一条消息:没有指定输入文件。