1

我正在尝试制作一种有效的表格。我正在使用 codeigniter,视图具有以下形式:

    <form class="renuncia_form" action="/formulario/send_form" method="post">
        <p>
            <label for="nombre">Nombre y apellidos:</label>
                <input name="nombre" type="text" id="renuncia_nombre">
            <br>
            <label for="participe">Nº Partícipe: </label>
                <input name="participe" type="text" id="renuncia_participe">
            <br>
            <label for="nombre_fondo">Nombre del Fondo de Inversión o SICAV: </label>
                <input name="nombre_fondo" type="text" id="renuncia_fondo">
            <br>
            <label for="email">Direccion de correo electrónico: </label>
                <input name="email" type="text" id="renuncia_email">
            <br>
            <input type="submit" value="Enviar" class="renuncia_submit" name="enviar">
        </p>
     </form>

控制器有这个php:

public function send_form(){
    if($_POST['submit'] == "Submit")
    {
        $errorMessage = "";

        if(empty($_POST['nombre']))
        {
            $errorMessage .= "<li>You forgot to enter your name</li>";
        }
        if(empty($_POST['participe']))
        {
            $errorMessage .= "<li></li>";
        }

        $varMovie = $_POST['nombre'];
        $varName = $_POST['participe'];

        if(empty($errorMessage)) 
        {
            $fs = fopen("mydata.csv","a");
            fwrite($fs,$varName . ", " . $varMovie . "\n");
            fclose($fs);

            header("Location: thankyou.html");
            exit;
        }
    }

}

我不知道我的表格是否正确。我只是想把它当作一个普通的表单操作,你点击提交,它会把你带到一个新页面,上面写着“感谢你的电子邮件”,没有 AJAX,就是这样。

有人可以帮我解决这个问题吗?

编辑:另外我把收件人的电子邮件放在哪里?

4

7 回答 7

1
 if($_POST['submit'] == "Submit")

应该

 if(isset($_POST['enviar']))

由于提交按钮没有nameas submit,而是name='enviar'

于 2013-05-15T14:39:53.340 回答
1

试试这个

if(isset($_POST["enviar"]) && $_POST["enviar"] == "Enviar")
于 2013-05-15T14:48:08.640 回答
0

我认为这是因为无论如何您都在翻译您的表格

if($_POST['submit'] == "Submit")

你用的形式

<input type="submit" value="Enviar" class="renuncia_submit" name="enviar">

您的实际提交按钮名称是enviar而不是submit。由于这是一个按钮,我建议您检查一下isset()

if(isset($_POST['enviar']))
于 2013-05-15T14:40:50.147 回答
0

你有

if($_POST['submit'] == "Submit")

如果条件满足,则其他所有内容。从来没有,因为没有这样的领域。只需将其删除即可。

至于邮件,您应该通过$_POST['email']. 如果您想发送电子邮件,请查看此处此处

于 2013-05-15T14:41:41.520 回答
0

我不确定,但问题是动作属性。

为什么不使用 From 助手来创建这个表单?无论如何,如果您不使用或无法使用它,请将操作更改为http://localhost/your_project/index.php/formulario/send_form.

在此处阅读有关 base_url 的信息http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

此外 if($_POST['submit'] == "Submit") 是错误的。一定是

if(isset($_POST['submit']) && ($_POST['submit'] === "Enviar"))
于 2013-05-15T14:50:04.810 回答
0
if (isset($_POST['enviar']))

这应该工作

于 2013-05-15T14:54:19.513 回答
0

采用:

public function send_form(){

    if(array_key_exists('submit',$_POST))
    {
        $errorMessage = "";

        if(empty($_POST['nombre']))
        {
            $errorMessage .= "<li>You forgot to enter your name</li>";
        }
        if(empty($_POST['participe']))
        {
            $errorMessage .= "<li></li>";
        }

        $varMovie = $_POST['nombre'];
        $varName = $_POST['participe'];

        if(empty($errorMessage)) 
        {
            $fs = fopen("mydata.csv","a");
            fwrite($fs,$varName . ", " . $varMovie . "\n");
            fclose($fs);

            header("Location: thankyou.html");
            exit;
        }
    }

}
于 2013-05-15T16:28:01.080 回答