Anthony Gilbert
Anthony Gilbert

Reputation: 55

Passing PHP variable data onto another page after validation

While I found something similar to this question on here it didn't answer my question outright.

I have set up this php script to validate the form data, which works, after its validated I want it to then pass the info onto another script page to let the user then verify their input data and then mail the data. Its at this state that I'm having trouble. I've spent the last few days trying to find a solution to this and unfortunately coming up short.

        <?php

            $name_error = '';
            $email_error = '';
            $comments_error = '';

            $error = false;

            if (!empty($_POST['submitted']))
                { //if submitted, the validate.

                    $name = trim($_POST['name']);

                    if (empty($name))
                        {
                            $name_error='Name is required';
                            $error = true;
                        }

                    $email = trim($_POST['email']);

                    /* If e-mail is not valid show error message */
                    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
                        {
                            $email_error='E-mail address not valid';
                            $error = true;
                        }

                    $comments = trim($_POST['comments']);

                    if (empty($comments))
                        {
                            $comments_error='Comments are required';
                            $error = true;
                        }

                    if ($error == false)
                        {
                            $name_send = $name;
                            $email_send = $email;
                            $comments_send = $comments;

                            /* Redirect visitor to the thank you page */
                            header('Location: /mail.php');
                            exit();
                        }
                }

The form this is attached to:

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">

<label>Your Name</label><br />
<input type="text" name="name" style="width:95%" class="text" value='<?php echo htmlentities($name) ?>' />
<br/>
<span class='error'><?php echo $name_error ?></span>
<br />

<label>Email</label><br />
<input type="email" name="email" style="width:95%" class="text" value='<?php echo htmlentities($email) ?>' />
<br/>
<span class='error'><?php echo $email_error ?></span>
<br />

<label for="comments" style="font-size:16px;">Feedback Comments</label><br />
<textarea name="comments" style="width:95%;" rows="8" value='<?php echo htmlentities($comments) ?>'></textarea>
<br />
<span class='error'><?php echo $comments_error ?></span>
<br />


<input type="checkbox" name="allowCommentPublish" checked="checked" />
<label for="allowCommentPublish" style="font-size:10px;">Allow these comments to be used on our website</label>

<fieldset class="optional">

    <h2>[ OPTIONAL ]</h2>

    <label>Company Name</label><br />   
    <input type="text" name="companyName" style="width:95%" class="text" />
    <br/>

    <label>Phone</label><br />

    <input type="text" name="phone" style="width:95%" class="text" /><br/>

    <div style="margin:5px 0px;">
            <input type="checkbox" name="incmarketing" />
            <label style="font-size:10px;"> Yes, you can email me specials and promotions.</label>
        <br/>
    </div>
</fieldset>

<fieldset>
    <input type="submit" name="submitted" value="Send" />
</fieldset>

I will point out im focusing on the main data inputs: Name E-mail and comments.

I need the info from this form to be sent onward but i dont know exactly how to do this and any help will be appreciated greatly.

Upvotes: 2

Views: 3331

Answers (3)

Karwalski
Karwalski

Reputation: 69

You can use hidden fields and javascript to submit the form. However as this is the same php page as the original form you will need an if statement

echo '<form name="newForm" action="newpage.php" method="POST">';
echo '<input type="hidden" name="name2" value"' . $name . '">;
echo '<input type="hidden" name="email2" value"' . $email . '">;
echo '<input type="hidden" name="comments2" value"' . $comments . '"></form>;
echo '<script> if (document.getElementById("name2").value != ""){window.onload = function(){ window.document.newForm.submit(); }} </script>';

Upvotes: 0

Pushkar
Pushkar

Reputation: 780

For passing the values to next page you will have to use either of the three methods. 1. Set cookies with the data. 2. Use global variable session. 3.Pass the data in the url.

For cookies u can set cookies with the values like

setcookie('name',$name);

in ur next page read those cookie data

For sessions:

 $_SESSION['name']= $name;

for reading data from cookies & session:

 $name = $_COOKIE['name'];

 $name = $_SESSION['name'];

For using sessions you must add the line

session_start();

at the start of both the pages that send or receive(use) the data

and for urls

header('Location: /mail.php?name=$name&email=$email&comment=$comments');

Read more on using session

Upvotes: 2

Tim Strawbridge
Tim Strawbridge

Reputation: 655

If you need to pass values from one script to another you can use $_SESSION variables. To start a session use: (at the top of the php script)

session_start();

$_SESSION['somename'] = $somevariable;

To access or get that same variable you can use this:

 session_start();
 $some_other_variable = $_SESSION['somename'];

or you can use hidden input fields.

Upvotes: 1

Related Questions