编辑:Mangling已修复 - 主要问题似乎是php / mysql连接
为了学习如何在网页上使用MySQL数据库,我正在学习通过PHP连接到MySQL实例的基本教程(全部通过WAMP2管理)
教程:http://www.freewebmasterhelp.com/tutorials/phpmysql/4使用PHP_SELF方法(据我所知,现在已经过折旧)。
我已经尝试了一些我发现的其他建议,但我无法找到解决我在apache日志中看到的以下错误:
(20024)The given path is misformatted or contained invalid characters: Cannot map POST /%3C$SEARCH.PHP%3E HTTP/1.1 to file, referer: http://localhost/search.php
此错误阻止返回HTML页面,我的浏览器中出现403错误
看来这行HTML / PHP是罪魁祸首:
<form name="search" method="post" action="<?=$PHP_SELF?>">
我已经看到过要么打开short_open_tag的建议(根据一些不好的想法),改变
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
我无法使用任何这些方法,并想知道是否有人能让我知道这次我错过了什么蠢事......
我使用的整个php文件是:
<?php
// // This is only displayed if they have submitted the form
if ($searching =="yes")
{
echo "<h2>Results</h2><p>";
//If they did not enter a search term we give them an error
if ($find == "")
{
echo "<p>You forgot to enter a search term";
exit;
}
include("dbinfo.php");
mysql_connect($host,$username,$password);
mysql_select_db("database") or die(mysql_error());
// We preform a bit of filtering
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
//Now we search for our search term, in the field the user specified
$data = mysql_query("SELECT * FROM main WHERE upper($field) LIKE'%$find%'");
//And we display the results
while($result = mysql_fetch_array( $data ))
{
echo $result['Item1'];
echo " ";
echo $result['Item2'];
echo "<br>";
echo "<br>";
}
//This counts the number or results - and if there wasn't any it gives them a little message explaining that
$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
echo "Sorry, but we can not find an entry to match your query<br><br>";
}
//And we remind them what they searched for
echo "<b>Searched For:</b> " .$find;
}
?>
<h2>Search</h2>
<form name="search" method="post" action="<?=$PHP_SELF?>">
Seach for: <input type="text" name="find" /> in
<Select NAME="field">
<Option VALUE="item1">Item1</option>
<Option VALUE="item2">Item2</option>
</Select>
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</form>
答案 0 :(得分:1)
避免短标记,它们已过期,请务必使用:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
加载页面时表单的html是什么样的?
编辑: 在回顾了我的回答后,我想稍微改写一下,因为它们并没有“过时”,但它们通常会导致问题(对于那些不知道如何完全设置php的人),所以对于初学者我建议避免它们。
答案 1 :(得分:0)
我确信这可能是糟糕的设计,但我总是在这种情况下对脚本名称进行硬编码(因此,只需action="search.php"
)。
答案 2 :(得分:0)
$ _SERVER ['PHP_SELF']变量包含php脚本的完整路径,例如: /your_server_path/your_file_name.php
显然,启动时,您的脚本找不到该文件,因为它正在寻找类似的东西 /your_server_path/your_server_path/your_file_name.php
尝试做这样的事情:
<form method="post" action="<?='http://localhost'.$_SERVER['PHP_SELF']?>">