Php Wordpress插件多次执行SQL
我创建了一个简单的Wordpress插件,它将文本数据存储在数据库中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>
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ü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ö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> </p>
<h3>Inhalt einfü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ü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');
?>