PHP access all $_POST[] variables into an array?

前端 未结 3 565
清歌不尽
清歌不尽 2020-12-13 10:56

how to capture all fields in the $_POST VARIABLE? into an array?

$email = $_POST;
$emails = array_keys($email);
foreach($emails as $email) {
            


        
相关标签:
3条回答
  • 2020-12-13 11:27

    $_POST is already an array. Why not just pass that?

    0 讨论(0)
  • 2020-12-13 11:36

    Hmm...would something like this help?

    <?php
    // blank array to hold emails
    $emails = array();
    
    foreach ( $_POST as $key => $value )
    {
        if ( preg_match('/email/', $key) )
        {
            $this_email = $value;
            // quick check to see if it is valid
            $this_email = filter_var($this_email, FILTER_VALIDATE_EMAIL);
            // also escape it to prevent SQL injections
            $this_email = $mysqli->real_escape_string($this_email);
            $emails[] = $this_email;
        }
    }
    
    // $emails is now a nice, clean array of email addresses
    $emailadd->insert_email_into_database($emails);
    
    echo '<pre>';
    print_r($emails);
    echo '</pre>';
    ?>
    
    <form method="post" action="index.php">
        <input type="text" name="email1" /><br />
        <input type="text" name="email2" /><br />
        <input type="text" name="email3" /><br />
        <input type="submit" />
    </form>
    
    0 讨论(0)
  • 2020-12-13 11:44

    If you want to capture a list from a POSTed form, then use the array syntax trick instead of enumerated input field names:

    <input type="email" name="emails[]">
    <input type="email" name="emails[]">
    <input type="email" name="emails[]">
    

    This way you need no guessing in PHP, because emails[] becomes an array implicitely then:

    print_r($_POST["emails"]);
    foreach ($_POST["emails"] as $email) {
    

    For database-escaping just use:

    $db_emails = array_map("mysql_real_escape_string", $_POST["emails"]);
    // that's an array too
    
    0 讨论(0)
提交回复
热议问题