简体   繁体   中英

Using “action” in Twitter Boostrap classes

I'm a newbie programmer trying to utilize Twitter Bootstrap to build out a concept. I'm using PHP and assigning actions within HTML tags to POST data and essentially take a user through the navigation. This has been pretty straightforward when using forms: ie here is a snippet that does work. For example, for this snippet of HTML:

<form action="?viewnotes" method="post">
<input type="hidden" name="id" value="<?php htmlout($note['id']); ?>">
</form>

It successfully triggers the following if statement in my index.php:

if (isset($_GET['viewnotes']))

However, I'm trying to do the same thing in my registration page, using a Twitter Bootstrap class for buttons. Here is the HTML:

<a class="btn btn-primary btn-large" action="?register">Sign Up Free!&raquo;</a></p>

The PHP code is:

if (isset($_GET['register']))
{
include 'register.html.php';    
}

Clicking on the Sign Up button is not invoking the PHP code. If I hard code the URL it works, but then I have a similar issue on the register.html.php page. HTML on the register page has:

<form class="form-horizontal" action="?storeuser" method="post">
  <fieldset>
        <legend>It's quick and easy...</legend>
        <div class="control-group">
            <label class="control-label">First Name</label>
            <div class="controls">
                <input type="text" name="fname" class="input-xlarge" id="fname">
            </div>
        </div>
        <div class="control-group">
            <label class="control-label" name="lname">Last Name</label>
            <div class="controls">
                <input type="text" name="lname" class="input-xlarge" id="lname">
            </div>
        </div>
        <div class="control-group">
            <label class="control-label" name="email">Email Address</label>
            <div class="controls">
                <input type="text" name="email" class="input-xlarge" id="email">
            </div>
        </div>
        <div class="control-group">
            <label class="control-label" name="password">Password</label>
            <div class="controls">
                <input type="password" name="password" class="input-xlarge" id="password">
            </div>
        </div>
    </fieldset>
    <button type="submit" name="action" class="btn btn-primary btn-large">Complete Registration</button>
</form>

However, when clicking on the button, the index file does not trigger the following, which would store the fields into the DB.

if (isset($_GET['storeuser']))

If I hardcode the URL to register.html.php, then the resulting URL looks like localhost/register.html.php?storeuser instead of localhost/?storeuser. I'm not sure if that's affecting the behavior here.

Thank you for the help!

I think you're approaching this the wrong way, and it's not Twitter Bootstrap's fault.

Usually, you'd use POST , not GET , to handle user registrations. Your form would look like this:

<form action="register.php" method="post">
  <!-- your form -->
  <fieldset>
    <input type="submit" name="register" value="Register" class="btn btn-primary" />
  </fieldset>
</form>

You can then build register.php as follows:

<?php
if (isset($_POST['register'])) {
    // handle user registration
}

// display form
?>

This will display the form when the user visits register.php , but will try and process the user registration first if the form's been POSTed.

尝试使用GET变量传递值

<form action="?viewnotes=1" method="post">

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