表单提交在CodeIgniter中不起作用

时间:2014-04-27 11:53:20

标签: php codeigniter

HTML:

<form method="post" action="<?php echo site_url("contact")?>">
    Full Name :

    <input type="text" name="contact_name" class="form-control archo-square-input" required>
    <br>Email :
    <input type="text" name="contact_mail" class="form-control archo-square-input" required/>
    <br>Message :
    <textarea class="form-control archo-square-input" name="contact_message" required></textarea>
    <br>

    <input type="submit" class="btn btn-info archo-square-input" />

</form>

PHP:

Index控制器的

Contact功能

public function index()
{
   if (isset($_POST['contact_name'])){

        $headers = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

        $name=$_POST["contact_name"];
        $mail=$_POST["contact_mail"];
        $subject="Contact Messages";
        $message = "
            <html>
                <head>
                    <title>Email From ".$name."</title>
                </head>
                <body>
                    <p>".$_POST["contact_message"]."</p>
                    <p>Mail :".$mail." </p>
                 </body>
           </html>
        ";

        if(mail($mail,$subject, $message,$headers)){
            $data['message']='success';
        }else{
            $data['message']='error';
        }

    }else{
        $data['message']='';
    }

    $data['all_albums']=$this->contact_model->get_all_albums();
    $this->template->build('contact_view',$data);
}

我知道这是一个愚蠢的问题,而且我做了很多次这样的工作。但上帝知道为什么这不起作用。请帮忙。提前谢谢。

注意:有人告诉我,这可能是.htaccess的问题。是否有可能?

4 个答案:

答案 0 :(得分:0)

在你的htaccess上试试这个

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^/(index\.php|assets/|humans\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

并更改您的config.php

$config['index_page'] = '';

答案 1 :(得分:0)

当您说不工作时,您在提交时遇到404错误或500错误? 我会检查您回显到表单的操作URL是否正确,然后尝试使用后期模拟器手动浏览到它(Firefox和Chrome的许多插件都可以这样做)。

如果您启用了CodeIgniter CSRF保护,则可能还需要在POST中包含该令牌。

如果您有这方面的工作网址,我很高兴看一看。

答案 2 :(得分:0)

使用CodeIgniter获取$ _POST的正确语法。

$post = $this->input->post();
$name = $post['name'];

答案 3 :(得分:0)

当我使用实时服务器时,.htaccess就像那样

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.rectangle\.com.bd$ [NC]
RewriteRule ^(.*)$ http://rectangle.com.bd/$1 [L,R=301]

我的site_url()就像那个www.rectangle.com.bd,因为在我的配置文件中我有

$config['base_url'] = 'http://www.rectangle.com.bd/';

因此,每次我提交表单时,都会按照www.rectangle.com.bd文件规则写入rectangle.com.bd重定向.htaccess。因此,在重定向的页面上,我没有获得$_POST值。因此,解决方案是将.htaccess文件设为:

RewriteCond %{HTTP_HOST} ^rectangle\.com.bd$ [NC]
RewriteRule ^(.*)$ http://www.rectangle.com.bd/$1 [L,R=301]

希望它会帮助接下来会遇到这类问题的人。