WAMP - PHP / MySQL - 为什么我的POST调用被破坏了

时间:2012-02-12 03:06:16

标签: php mysql variables wamp

编辑: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> 

3 个答案:

答案 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']?>">