1

ユーザーが自分の名前を挿入するフォームがあります。フォームを送信すると、指定された名前が既に存在するかどうかをページが確認し、存在する場合はエラーで戻り、そうでない場合は通常どおり続行します。

入力値が存在するかどうかを確認し、存在する場合はフォームを停止するにはどうすればよいですか?

<?php

$array = get_meta_values( 'user_submit_name' );
// Array to search:
// Temp array so we don't find the same key multipule times:
$temp = array();
// Iterate through the array:
foreach ($array as $key)
{
// Check the key hasn't already been found:
if (!in_array($key, $temp))
{
    // Get an array of all the positions of the key:
    $keys = array_keys($array, $key);
    // Check if there is more than one position:
    if (count($keys)>0)
    {
        // Add the key to the temp array so its not found again:
        $temp[] = $key;
        // Do something...
        echo '<li>Name already used';                        
    }
}
}
?>

html

<form class="form-horizontal" role="form" id="usp_form" method="post" data-validate="parsley" enctype="multipart/form-data" novalidate>

        <div class="form-group">
            <label  class="col-lg-2 control-label" for="user-submitted-name">Il tuo nome</label>
             <div class="col-lg-10">
                <input name="user-submitted-name" type="text" value="" data-required="true" required placeholder="Your name" class="form-control input-lg usp-input">
            </div>
        </div>

    <div class="form-group">
         <div class="col-lg-offset-2 col-lg-10">
            <input class="submit btn btn-lg btn-primary" name="user-submitted-post" id="user-submitted-post" type="submit" value="<?php _e('Submit', 'usp'); ?>">
        </div>
    </div>
4

2 に答える 2

1

いただいたコメントから、次のことがわかりました。

$_POST["user-submitted-name"]; // name from the form
$names = get_meta_values('user_submit_name'); // array with names not allowed

次に、簡単な方法のように見えます:

if (in_array($_POST["user-submitted-name"], $names)) {
    // posting not allowed
    echo '<li>Name already used';
} else {
    // posting is allowed
    // save posting here...
    // and then go to success page:
    header("Location: success.html"); // redirect
    exit(); // and stop here
}
于 2013-09-15T19:22:01.613 に答える