我如何用php验证我的表单数据,使其包含内容


How can I php validate my form data so that it has to include content?

所以我创建了一个html表单,它将信息提供给包含html表单的文档,并且我希望进行php检查以确保特定字段中包含信息,我的代码如下所示。

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $errors = array();
    if ( ! isset($_POST['dbname'])) {
        array_push($errors,'dbname');
    }
        if ( ! isset($_POST['dbpass'])) {
        array_push($errors, 'dbpass');
        }
            if ( ! isset($_POST['dbhost'])) {
        array_push($errors, 'dbhost');
        }
            if ( ! isset($_POST['prefix'])) {
        array_push($errors, 'prefix');
        }
            if (isset($_POST['dbname']) && trim($_POST['dbname']) != '' {
            echo "something";
            }
            else
            {
            echo "nothing";
            }
    if (count($errors) > 0) {
        $error_msg = implode('<br>', $errors);
        show_form($error_msg);
    }
    else {
        do_install();
        echo 'Install Done';
    }
}
else {
    // show the form
    show_form();
}

给我带来麻烦的线路是

if (isset($_POST['dbname']) && trim($_POST['dbname']) != ''

基本上,我认为这一行基本上会说"如果字段dbname被设置,并且在修剪时它的值等于某个值,那么就这样做,如果不这样做,那么就这么做",但当我在整个过程中添加这一行时,它就坏了,不再在浏览器中显示任何内容。

如果你需要它,我文件的其余部分看起来像这个

function show_form($msg = '') {
?>
<html>
    <body>
        <?php if (isset($msg) && trim($msg) != '') { echo $msg; } ?>
        <P> HI </P>
        <form action="hi.php" method="POST">
            <p>Your Database name and user: <input type="text" name="dbname" /><br />
            Your database password <input type="text" name="dbpass" /> <br/>
            Your DB_HOST (ip address) <input type ="text" name = "dbhost" /> <br/> 
            Your desired table prefix <input type ="text" name = "prefix" /> <br />
            </p>
            <p><input type="submit" value="Send it!"></p>
        </form>
<?php
        }
        ?>
<?php
function recurseRmdir($di) {
  $files = array_diff(scandir($di), array('.','..'));
  foreach ($files as $file) {
    (is_dir("$di/$file")) ? recurseRmdir("$di/$file") : unlink("$di/$file");
  }
  return rmdir($di);
}
?>
<?php
function do_install() { 
    chdir(__DIR__);
    $dir = getcwd(); /** stores the directory that the php file is in as a variable */
    file_put_contents($dir . '/wordpress.zip', file_get_contents('http://wordpress.org/latest.zip'));
    $zip = new ZipArchive;
    $zip->open('wordpress.zip');
    $zip->extractTo($dir);
    $zip->close();
    unlink($dir . '/wordpress/wp-content/plugins/hello.php');
    recurseRmdir($dir . '/wordpress/wp-content/plugins/akismet');
    recurseRmdir($dir . '/wordpress/wp-content/themes/twentyfourteen');
    recurseRmdir($dir . '/wordpress/wp-content/themes/twentythirteen');
    recurseRmdir($dir . '/wordpress/wp-content/themes/twentytwelve');
    file_put_contents ($dir . '/wpbfboilerplate.zip', file_get_contents ('/home/wpbfboilerplate.zip'));
    $zip = new ZipArchive;
    $zip->open('wpbfboilerplate.zip');
    $zip->extractTo($dir);
    $zip->close();
    unlink($dir . '/wordpress.zip');
    unlink($dir . '/wpbfboilerplate.zip');
    rename($dir . '/wordpress/wp-config-sample.php', $dir . '/wordpress/wp-config.php');
    $contents = file_get_contents($dir . '/wordpress/wp-config.php');
    $new_contents = str_replace('database_name_here',$dbname, $contents);
    file_put_contents('wordpress/wp-config.php', $new_contents);
    $contents = file_get_contents($dir . '/wordpress/wp-config.php');
    $new_contents = str_replace('username_here', $dbname, $contents);
    file_put_contents('wordpress/wp-config.php', $new_contents);
    $contents = file_get_contents($dir . '/wordpress/wp-config.php');
    $new_contents = str_replace('localhost', $dbhost, $contents);
    file_put_contents('wordpress/wp-config.php', $new_contents);
    $contents = file_get_contents($dir . '/wordpress/wp-config.php');
    $new_contents = str_replace('password_here', $dbpass, $contents);
    file_put_contents('wordpress/wp-config.php', $new_contents);
    $contents = file_get_contents($dir . '/wordpress/wp-config.php');
    $new_contents = str_replace("'$table_prefix  = 'wp_';", "'$table_prefix  =" . "'" . $prefix . "'", $contents);
    file_put_contents('wordpress/wp-config.php', $new_contents);
    }
?>

应该是if(isset($_POST['dbname'])&amp;trim($_POST['dbname'])!=''){我只是忘记了括号!xD

你可以试试这个

if(!$_POST['dbname']){
    $data['Error']='Please enter DB Name.';
    show_form($data['Error']); // show the form
}elseif(!$_POST['dbpass']){
    $data['Error']='Please enter DB password.';
    show_form($data['Error']); // show the form
}elseif(!$_POST['dbhost']){
    $data['Error']='Please enter DB Host.';
    show_form($data['Error']); // show the form
}elseif(!$_POST['prefix']){
    $data['Error']='Please enter DB Prefix.';
    show_form($data['Error']); // show the form
}else{
        do_install();
        echo 'Install Done';
}

做一些这样的事情,我希望上面会有所帮助。