简体   繁体   中英

form action codeigniter does not find post data

i have a problem with a form in codeigniter. i have tried different things but i can not find a solution.

this is the form:

<form method="post" action="<?php echo base_url(); ?>cms/cms/newUser">
<div class="row">
    <div class="col-md-3">
        Naam:
    </div>
    <div class="col-md-9">
        <input type="text" id="naam" name="username" />
    </div>
</div>

<div class="row">
    <div class="col-md-3">
        E-mail:
    </div>
    <div class="col-md-9">
        <input type="email" name="mail" id="email" />
    </div>
</div>

<div class="row">
    <div class="col-md-3">
        Passwoord:
    </div>
    <div class="col-md-9">
        <input type="password" name="pass" id="password" />
    </div>
</div>

<div class="row">
    <div class="col-md-8 col-md-offset-2">
        <input type="submit" name="aanmaken" class="btn btn-block btn-info" value="aanmaken" />
    </div>
</div>

in my controller i process the data coming from the form. the controller is located at controllers/cms/cms.php

class Cms extends MY_Controller 
{
    public function newUser()
    {
        if(isset($_POST))
        {
            echo "verwerk deze data <br>";

            if(isset($_POST['username']))
            {
                echo 'naam is set!';
            }
            else {
                echo 'naam is not set!';
            }

            $naam = $_POST['username'];
            $mail = $_POST['email'];
            $pass = $_POST['password'];

            echo "naam: " . $naam . "<br>";
            echo "mail: " . $mail . "<br>";
            echo "pass: " . $pass . "<br>";

            $time = new DateTime();
            $time->setTimezone(new DateTimeZone ('Europe/Brussels'));
            $tijd = $time->format('Y-m-d H:i:s');

            include_once('application/libraries/PasswordHash.php');

            $hasher = new PasswordHash(12,false);
            $passwoord = $hasher->HashPassword($pass);

            $gebruiker = new Gebruiker();
            $gebruiker->naam = $naam;
            $gebruiker->email = $mail;
            $gebruiker->paswoord = $passwoord;
            $gebruiker->laatsteLogin = $tijd;
            $gebruiker->active = 0;

            echo "coded pas" . $passwoord . "<br>";
        }
        else 
        {
            echo "no post";
        }
    }

when i check my website and fill in the form i get 3 php error that the values that i put in the variable from the post does not exist. also the if(isset) function says that the variable is not set. i don't know why the form action doesn't work.

i even tried the codeigniter way but it gave the same result.

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

thanks for the help.

you need to pass only controllername/func_name and keep your controller file in controller dir then try in CI way

<?php echo form_open("cms/newUser");?>
<?php echo form_close();?>

or

<form method="post" action="<?php echo base_url(); ?>cms/newUser">

Else you need to use routing for this and tell to pick this controller on that route for this go to config/routes.php and add route like:-

$route['cms'] = "cms/cms";

In the form tag

<form method="post" action="<?php echo base_url(); ?>cms/cms/newUser">

cms is the name of the controller and you have used it twice. Try with

<form method="post" action="<?php echo base_url(); ?>cms/newUser">
HTML:

enter code here

<form method="post" action="<?php echo site_url(); ?>/cms/cms/newUser">
<div class="row">
<div class="col-md-3">
    Naam:
</div>
<div class="col-md-9">
    <input type="text" id="naam" name="username" />
</div>

E-mail:

<div class="row">
<div class="col-md-3">
    Passwoord:
</div>
<div class="col-md-9">
    <input type="password" name="pass" id="password" />
</div>
</div>

<div class="row">
<div class="col-md-8 col-md-offset-2">
    <input type="submit" name="aanmaken" class="btn btn-block btn-info" value="aanmaken" />
</div>
</div>

PHP:
class Cms extends MY_Controller 
{
public function newUser()
{
    if(isset($_POST))
    {
        echo "verwerk deze data <br>";

        if($this->input->post('username'))
        {
            echo 'naam is set!';
        }
        else {
            echo 'naam is not set!';
        }

        $naam = $this->input->post('username');
        $mail = $this->input->post('mail');
        $pass = $this->input->post('pass');

        echo "naam: " . $naam . "<br>";
        echo "mail: " . $mail . "<br>";
        echo "pass: " . $pass . "<br>";

        $time = new DateTime();
        $time->setTimezone(new DateTimeZone ('Europe/Brussels'));
        $tijd = $time->format('Y-m-d H:i:s');

        include_once('application/libraries/PasswordHash.php');

        $hasher = new PasswordHash(12,false);
        $passwoord = $hasher->HashPassword($pass);

        $gebruiker = new Gebruiker();
        $gebruiker->naam = $naam;
        $gebruiker->email = $mail;
        $gebruiker->paswoord = $passwoord;
        $gebruiker->laatsteLogin = $tijd;
        $gebruiker->active = 0;

        echo "coded pas" . $passwoord . "<br>";
    }
    else 
    {
        echo "no post";
    }
}

$this->input->post('') will check automatically not need of isset(). $this->input->post('') will take name not id

try to load form helper and use this code

controller:

$this->viewContent['form_action'] = base_url()."cms/cms/newUser"; $this->load->view('your_view_page',$this->viewContent);

view: echo form_open($form_action);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM