【发布时间】:2012-02-20 05:48:50
【问题描述】:
我正在开发一个 Wordpress 插件。有多个表单元素,出于某种原因,每次我单击一个表单上的提交按钮时,它都会告诉另一个表单提交。这很不方便,因为当我单击按钮保存新信息时,另一个表单会从数据库中删除第一行。
Javascript:
//This is the Javascript that controls the remove all form.
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('tr.assoc_row').show();
$('#settings-removed-msg').hide();
$('#formdeleteassoc').submit(function(e){
e.preventDefault(); //Works to prevent normal submission of the form.
$.ajax ({
type: 'POST',
url: '',
data: {remove_all: ''
},
success: function() {
$('#settings-removed-msg').fadeIn('fast'); //Working now
$('tr.assoc_row').fadeOut('fast'); //Working now
}
});
});
});
</script>
HTML
<!-- This the the HTML and PHP that renders the options page in Wordpress. -->
<div class="wrap">
<?php screen_icon('plugins'); ?>
<h2>Tag to Category Associator</h2>
<div id="settings-removed-msg" class="updated"><p>Associations were successfully removed.</p></div>
<form action="<?php echo $_SERVER['PHP_SELF'].'?page=tag2cat-associator'; ?>" method="post">
<?php
settings_fields('cb_t2c_options');
do_settings_sections('tag2cat-associator');
?>
<input name="Submit" type="submit" value="Save Changes" />
</form></div>
PHP
//These are the form elements.
//Show the buttons to remove all associations and remove a single association.
echo '<table>';
echo '<tr>';
echo '<td></strong>Remove existing associations</strong></td>';
echo "<td><form action='" . $_SERVER['PHP_SELF'] . "?page=tag2cat-associator' method='post'>";
echo "<select name='remove_single' id='removeSingle' class='remove-single' >";
foreach ($cb_t2c_show_associations as $tags) {
echo "<option value = '".$tags->assoc_ID."'>".$tags->assoc_ID."</option>";
}
echo '</select>';
echo " <input type = 'submit' name='submit-remove' value='Remove'></input>";
echo '</form></td></tr>';
echo '<tr>';
echo '<td>Remove all (Will delete existing associations)</td>';
echo "<td><form action='" . $_SERVER['PHP_SELF'] . "?page=tag2cat-associator' id='formdeleteassoc' method='post'>";
echo "<input name='remove_all' id='removeAll' class='remove-all' type='submit' value='Remove All'></input></form></td></tr>";
echo '</table>';
//The if's alter the database if the right $_POST information occurs.
if ( isset( $_REQUEST['remove_all'] ) ){
$wpdb->query("DELETE FROM ".$prefix."cb_tags2cats");
}
if ( isset( $_REQUEST['remove_single'] ) ) {
$remove_assoc = $_REQUEST['remove_single'];
$wpdb->query("DELETE FROM ".$prefix."cb_tags2cats WHERE assoc_ID = " . $remove_assoc);
}
【问题讨论】:
-
你有一个 SQL 注入漏洞。
-
你能把问题说清楚点吗?
-
每次单击 时,都会设置 $_REQUEST['remove_single'],并最终从表中删除一行。如果这是由于 SQL 注入漏洞造成的,我该如何修复它?谢谢。
标签: jquery forms post wordpress