【发布时间】:2017-05-31 02:26:39
【问题描述】:
我有一个 Wordpress 页面,我正在处理一个搜索功能,该功能从托管在 Amazon AWS 上的数据库中提取。
在搜索时,我可以很好地提取数据,但结果显示在搜索栏下方。
我希望结果显示在单独的页面上。
我已经使用之前提出的问题尝试了几个建议,但没有任何效果。
这是我的代码:
<?php
/* Template Name: Database */
?>
<?php
global $query_string;
$query_args = explode("&", $query_string);
$search_query = array();
if( strlen($query_string) > 0 ) {
foreach($query_args as $key => $string) {
$query_split = explode("=", $string);
$search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach
} //if
$search = new WP_Query($search_query);
?>
<?php get_header(); ?>
<?php get_footer(); ?>
<?php
$db_hostname = 'xxxxxxxxxxxxxxx';
$db_username = 'xxxxxxxxxxxxxxx';
$db_password = 'xxxxxxxxxxxxxxx';
$db_database = 'xxxxxxxxxxxxxxx';
$con = mysql_connect($db_hostname,$db_username,$db_password);
if (!$con){
die('404 Could not connect to server: ' . mysql_error());
}
mysql_select_db($db_database, $con);
global $sf_options;
$sidebar_config = $sf_options['archive_sidebar_config'];
$left_sidebar = $sf_options['archive_sidebar_left'];
$right_sidebar = $sf_options['archive_sidebar_right'];
$blog_type = $sf_options['archive_display_type'];
if ( $blog_type == "masonry" || $blog_type == "masonry-fw" ) {
global $sf_include_imagesLoaded;
$sf_include_imagesLoaded = true;
}
?>
<div class="container-fluid">
<center>
<form role="" method="get" >
<p style="color: #fff;">Search products and services for your business. We make it easier<br />to manage your business operations and make informed purchasing decisions.</p>
<input type="text" name="term" placeholder="Start typing to find a product or business"/>
<span><input type="submit" value="" class="btn btn-default" /></span>
</form>
</center>
</div>
<?php
if (!empty($_REQUEST['term'])) {
$term = mysql_real_escape_string($_REQUEST['term']);
$sql = "SELECT * FROM wpfr_listing WHERE Description LIKE '%".$term."%'";
$r_query = mysql_query($sql);
while ($row = mysql_fetch_array($r_query)){
echo '<br /> Company: ' .$row['title'];
echo '<br /> Certs: '.$row['certs'];
echo '<br /> Certifier: '.$row['certifier'];
echo '<br /> Address: '.$row['address'];
echo '<br /> Country: '.$row['country'];
echo '<br /> State: '.$row['state'];
echo '<br /> City: '.$row['city'];
}
}
?>
非常感谢您提供的任何帮助。
【问题讨论】:
-
天啊,这段代码太脆弱了。为了帮助您解决问题:尝试在表单前添加
if (empty($_REQUEST['term'])),然后将表单下方的if更改为else -
是什么让这段代码易受攻击?它是由我们不再使用的开发人员编写的。
-
mysql_ 命令已弃用(更改为 mysqli_),并且在同一文件中拥有连接到 db 的凭据不是一个好习惯。总的来说,切换到 PDO 比使用 mysqli_ 更好。 php.net/manual/en/ref.pdo-mysql.php