Php Wordpress插件多次执行SQL

Php Wordpress插件多次执行SQL,php,sql,wordpress,plugins,Php,Sql,Wordpress,Plugins,我创建了一个简单的Wordpress插件,它将文本数据存储在数据库中 if(isset($_POST['staticbox_submit'])) { $sql = "UPDATE staticbox SET content = '".$_POST['staticbox_content']."';"; if(!$wpdb->query($sql)) {echo '<p style="color:#990000;">Fehlgeschlagen.</p>

我创建了一个简单的Wordpress插件,它将文本数据存储在数据库中

if(isset($_POST['staticbox_submit'])) {
    $sql = "UPDATE staticbox SET content = '".$_POST['staticbox_content']."';";
    if(!$wpdb->query($sql)) {echo '<p style="color:#990000;">Fehlgeschlagen.</p>';} else {echo '<p style="color:#009900;">Ausgef&uuml;hrt.</p>';}   
}
我在表单中有一个文本区域和按钮。如果设置了按钮的post变量,则将文本存储在数据库中

    <form action="?page=staticbox/main.php" method="post">
        <textarea name="staticbox_content" cols="100" rows="10"><?php $staticbox_content = $wpdb->get_col( "SELECT content FROM staticbox" );   foreach($staticbox_content as $item) {echo $item;} ?></textarea><br />
        <input type="submit" name="staticbox_submit" />
    </form>

问题在于第一块代码。你能多看看吗?这是一个
save\u post
操作吗?另外,您的代码是不安全的,请检查。不确定您的特定问题,但您的代码在sql注入中不安全(以防万一您没有为简洁起见对其进行裁剪)。您的插件很容易受到sql注入攻击。该文本区域仅在后端可见。如何将SQL注入其中?编辑:别担心我是通过Post猜的。@brasofilo我编辑过,所以你可以看到。
    <form action="?page=staticbox/main.php" method="post">
        <textarea name="staticbox_content" cols="100" rows="10"><?php $staticbox_content = $wpdb->get_col( "SELECT content FROM staticbox" );   foreach($staticbox_content as $item) {echo $item;} ?></textarea><br />
        <input type="submit" name="staticbox_submit" />
    </form>
<?php
/*** WIRD BEIM AKTIVIEREN AUSGEFÜHRT ***/
function staticbox_activate() {
    $sql = "
        CREATE TABLE IF NOT EXISTS `staticbox` (
        `content` text NOT NULL 
        )";
    global $wpdb;
    $wpdb->query($sql);
}
register_activation_hook( __FILE__, 'staticbox_activate' );

/*** WIRD BEIM DEINSTALLIEREN AUSGEFÜHRT ***/
function staticbox_uninstall() {
    $sql = "DROP TABLE `staticbox`";
    global $wpdb;
    $wpdb->query($sql);
}
register_uninstall_hook( __FILE__, 'staticbox_uninstall' );

/*** DIE FRONTEND FUNKTIONEN ***/
function staticbox() {
    global $wpdb;

    $staticbox_text = "<strong>Überschrift</strong><p>Der Text wurde hier eingefügt</p>";
    $staticbox_text_html = utf8_encode($staticbox_text);
    $staticbox_content = $wpdb->get_col( "SELECT content FROM staticbox" );
    foreach($staticbox_content as $item) {echo $item;}
}

/*** DIE BACKEND FUNKTIONEN ***/
function staticbox_admin() {
    global $wpdb;   ?>
    <div class="wrap">
        <h2>Staticbox</h2>
        <p>Hier k&ouml;nnen Sie der Staticbox Inhalt geben, welcher dann im Frontend ausgegeben wird.</p>
        <p>Dies erfolgt durch das Einspeisen folgender Funktion an einer beliebigen Stelle im Theme des Blogs:</p>
        <code>
            if ( function_exists ( staticbox() ) ) {
                staticbox();
            }
        </code>
        <p>&nbsp;</p>
        <h3>Inhalt einf&uuml;gen</h3>
        <form action="?page=staticbox/main.php" method="post">
            <textarea name="staticbox_content" cols="100" rows="10"><?php $staticbox_content = $wpdb->get_col( "SELECT content FROM staticbox" );   foreach($staticbox_content as $item) {echo $item;} ?></textarea><br />
            <input type="submit" name="staticbox_submit" />
        </form>
        <?php echo $_POST['staticbox_content']; ?>
    </div>

    <?php
    if(isset($_POST['staticbox_submit'])) {
        $sql = "UPDATE staticbox SET content = '".$_POST['staticbox_content']."';";
        if(!$wpdb->query($sql)) {echo '<p style="color:#990000;">Fehlgeschlagen.</p>';} else {echo '<p style="color:#009900;">Ausgef&uuml;hrt.</p>';}   
    }

    echo $sql;
}

/*** DIE MENÜS WERDEN HINZUGEFÜGT ***/
function staticbox_menu() {
  add_menu_page('Staticbox', 'Staticbox', 10, __FILE__, 'staticbox_admin');
  //add_submenu_page(__FILE__, 'Bloggerei', 'Bloggerei', 10, 'bloggerei', 'bloggerei');
}
add_action('admin_menu', 'staticbox_menu');

?>