我的一个网页出现了一个非常奇怪的问题。它是用PHP编写的,今天突然间,在没有对网站进行任何更改的情况下,它在加载某个页面时开始冻结(仅限此页面)。 冻结意味着页面的一半加载然后停止,看起来浏览器正在等待来自服务器的更多信息(在所有流行的浏览器中也是如此)。
该页面有两种类型的用户,它适用于管理员但冻结用户。唯一的区别是用户在某些状态下没有表格行的单选按钮。 现在,当我试图解决这个问题时,我开始操作代码,希望我能找到导致问题的部分,但事实证明我可以删除页面的部分和问题消失了。我还可以添加一行或两行,问题就消失了。更具体:每次都不起作用。我添加了一个额外的行,它为表单添加了一个隐藏字段,问题仍然存在,但我添加了另一个具有不同名称的行,现在它可以工作。
我正在使用PHP“print”函数将每行代码输出到浏览器。
什么可能导致这个问题?这太奇怪了,我只需要知道! :)
我做了一些额外的测试。 现在只需添加一行即可使用。这一行是:
print "<input type=\"hidden\" name=\"a\" value=\"123456789012345678901234567890\">";
如果我从“123456789012345678901234567890”号码中删除一位,它会再次开始冻结!如果我添加更多数字,它仍然可以正常工作......
页面加载后没有任何javascript代码扫描。
这是该页面的整个代码。它嵌入到index.php中 最大的问题是:为什么它适用于'admin'而不适用于'user'(这些是来自数据库的字段)
<?
//$gdzie = "noworodki";
$userx = $_SESSION['userx'];
$result2=mysql_query("SELECT * FROM porody_ludzie WHERE login = '$userx'");
$row5=mysql_fetch_array($result2);
$dzisiaj = getdate();
$rok = $dzisiaj['year'];
$ilosc_rekordow = 15;
$ktora_tabela = "porody_karta";
if(($filter=="Filtruj")||($filter=="filtrowane")){
if($filter=="Filtruj"){
$strona=0;
}
if($numer_karty!=""){
$query = mysql_query("SELECT COUNT(*) FROM $ktora_tabela WHERE numer = '$numer_karty'");
}else{
if($rodzaj_porodu!="-----"){
$query = mysql_query("SELECT COUNT(*) FROM $ktora_tabela WHERE rodzaj_p LIKE '$rodzaj_porodu'");
}else{
if($status!="-----"){
$query = mysql_query("SELECT COUNT(*) FROM $ktora_tabela WHERE status = '$status'");
}else{
//po nazwisku matki
if($nazwisko_matki!=""){
$query = mysql_query("SELECT COUNT(*) FROM $ktora_tabela WHERE nazwisko LIKE '$nazwisko_matki'");
}else{
//print "po all<br>";
$query = mysql_query("SELECT COUNT(*) FROM $ktora_tabela");
}
}
}
}
}else{
$query = mysql_query("SELECT COUNT(*) FROM $ktora_tabela");
}
$ilosc_rekordow_w_tabeli = mysql_result($query, 0, 0);
$max = ceil($ilosc_rekordow_w_tabeli/$ilosc_rekordow);
if($next=="następna"){
$strona++;
}elseif($next=="poprzednia"){
$strona--;
}elseif($next=="pierwsza"){
$strona=0;
}elseif($next=="ostatnia"){
if($max>1){
$strona=$max-1;
}
}
$offset = $strona*$ilosc_rekordow;
print '<table border=0 width="100%">
<tr>
<td width="30%"> </td>
<td width="10%">';
print "<form method=\"post\" action=\"index.php\">";
print "<input type=\"hidden\" name=\"action\" value=\"0\">";
print "<input type=\"hidden\" name=\"strona\" value=\"$strona\">";
print "<input type=\"hidden\" name=\"gdzie\" value=\"$gdzie\">";
if($filter!=""){
print "<input type=\"hidden\" name=\"filter\" value=\"filtrowane\">";
}
print "<input type=\"hidden\" name=\"rodzaj_porodu\" value=\"$rodzaj_porodu\">";
print "<input type=\"hidden\" name=\"nazwisko_matki\" value=\"$nazwisko_matki\">";
print "<input type=\"hidden\" name=\"status\" value=\"$status\">";
print "<input type=\"hidden\" name=\"numer_karty\" value=\"$numer_karty\">";
print "<center><input type=\"submit\" name=\"next\" value=\"pierwsza\"></form></td>";
print '<td width="10%">';
if($strona>0){
print "<form method=\"post\" action=\"index.php\">";
print "<input type=\"hidden\" name=\"action\" value=\"0\">";
print "<input type=\"hidden\" name=\"strona\" value=\"$strona\">";
print "<input type=\"hidden\" name=\"gdzie\" value=\"$gdzie\">";
if($filter!=""){
print "<input type=\"hidden\" name=\"filter\" value=\"filtrowane\">";
}
print "<input type=\"hidden\" name=\"rodzaj_porodu\" value=\"$rodzaj_porodu\">";
print "<input type=\"hidden\" name=\"nazwisko_matki\" value=\"$nazwisko_matki\">";
print "<input type=\"hidden\" name=\"status\" value=\"$status\">";
print "<input type=\"hidden\" name=\"numer_karty\" value=\"$numer_karty\">";
print "<center><input type=\"submit\" name=\"next\" value=\"poprzednia\"></form>";
}else{
print ' ';
}
print '</td><td width="10%">';
if($strona<$max-1){
print "<form method=\"post\" action=\"index.php\">";
print "<input type=\"hidden\" name=\"action\" value=\"0\">";
print "<input type=\"hidden\" name=\"strona\" value=\"$strona\">";
print "<input type=\"hidden\" name=\"gdzie\" value=\"$gdzie\">";
if($filter!=""){
print "<input type=\"hidden\" name=\"filter\" value=\"filtrowane\">";
}
print "<input type=\"hidden\" name=\"rodzaj_porodu\" value=\"$rodzaj_porodu\">";
print "<input type=\"hidden\" name=\"nazwisko_matki\" value=\"$nazwisko_matki\">";
print "<input type=\"hidden\" name=\"status\" value=\"$status\">";
print "<input type=\"hidden\" name=\"numer_karty\" value=\"$numer_karty\">";
print "<center><input type=\"submit\" name=\"next\" value=\"następna\"></form>";
}else{
print ' ';
}
print '</td><td width="10%">';
print "<form method=\"post\" action=\"index.php\">";
print "<input type=\"hidden\" name=\"action\" value=\"0\">";
print "<input type=\"hidden\" name=\"strona\" value=\"$strona\">";
print "<input type=\"hidden\" name=\"gdzie\" value=\"$gdzie\">";
if($filter!=""){
print "<input type=\"hidden\" name=\"filter\" value=\"filtrowane\">";
}
print "<input type=\"hidden\" name=\"rodzaj_porodu\" value=\"$rodzaj_porodu\">";
print "<input type=\"hidden\" name=\"nazwisko_matki\" value=\"$nazwisko_matki\">";
print "<input type=\"hidden\" name=\"status\" value=\"$status\">";
print "<input type=\"hidden\" name=\"numer_karty\" value=\"$numer_karty\">";
print "<center><input type=\"submit\" name=\"next\" value=\"ostatnia\"></form></td>";
print '<td width="30%"> </td></tr></table>';
$strona++;
print "<form name=\"ludzie\" method=\"post\" action=\"index.php\">";
print "<table border=0 width=\"100%\">
<tr>
<td width=\"15%\">
<font size=\"-1\">Numer strony: $strona</font><br>";
$strona--;
print " </td>
<td width=\"25%\">
<font size=\"-1\">Status: <br>
<select id=\"status\" name=\"status\">";
print "<option>-----</option>";
print "<option>otwarty</option>";
print "<option>zamknięty</option>";
print "</select>
</td>
<td width=\"20%\">
<font size=\"-1\">Numer karty: <br><input name=\"numer_karty\">
</td>
<td width=\"20%\">
<font size=\"-1\">Rodzaj porodu: <br>";
print "<select name=\"rodzaj_porodu\" id=\"rodzaj_porodu\">";
print "<option>-----</option>";
$rodzajPoroduResult=mysql_query("SELECT * FROM porody_rodzaje_porodow");
while($rodzajPoroduRow=mysql_fetch_array($rodzajPoroduResult)){
print "<option value=\"$rodzajPoroduRow[id]\">$rodzajPoroduRow[nazwa]</option>";
}
print "</select>";
print "</td>
<td width=\"20%\">
<font size=\"-1\">Nazwisko matki: <br><input name=\"nazwisko_matki\" id=\"nazwisko_matki\">
</td>
<td width=\"5%\">";
print "<input type=\"hidden\" name=\"action\" value=\"0\">";
print "<input type=\"hidden\" name=\"gdzie\" value=\"$gdzie\">";
print "<input type=\"hidden\" name=\"strona\" value=\"$strona\">
<input type=\"submit\" name=\"filter\" value=\"Filtruj\"></form>
</td>
</table>";
print "<form method=\"post\" action=\"index.php\">
<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" valign=\"top\">";
$result2 = "";
if(($filter=="Filtruj")||($filter=="filtrowane")){
if($numer_karty!=""){
$result2=mysql_query("SELECT * FROM $ktora_tabela WHERE numer = '$numer_karty' ORDER BY numer DESC LIMIT $offset,$ilosc_rekordow");
}else{
if($rodzaj_porodu!="-----"){
$result2=mysql_query("SELECT * FROM $ktora_tabela WHERE rodzaj_p LIKE '$rodzaj_porodu' ORDER BY numer DESC LIMIT $offset,$ilosc_rekordow");
}else{
if($status!="-----"){
$result2 = mysql_query("SELECT * FROM $ktora_tabela WHERE status = '$status' ORDER BY numer DESC LIMIT $offset,$ilosc_rekordow");
}else{
if($nazwisko_matki!=""){
$result2=mysql_query("SELECT * FROM $ktora_tabela WHERE nazwisko LIKE '$nazwisko_matki' ORDER BY numer DESC LIMIT $offset,$ilosc_rekordow");
}else{
//print "po all<br>";
$result2 = mysql_query("SELECT * FROM $ktora_tabela ORDER BY numer DESC LIMIT $offset,$ilosc_rekordow");
}
}
}
}
}else{
$result2=mysql_query("SELECT * FROM $ktora_tabela ORDER BY rok DESC, numer DESC LIMIT $offset,$ilosc_rekordow");
}
print "<tr><td border=\"0\" valign=\"top\" width=\"2%\"><center>#</center></td>";
print "<td border=\"0\" valign=\"top\" width=\"20%\"><b><center>Numer</center></b></td>";
print "<td border=\"0\" valign=\"top\" width=\"15%\"><b><center>Data porodu</center></b></td>";
print "<td border=\"0\" valign=\"top\" width=\"23%\"><b><center>Imię i nazwisko pacjentki</center></b></td>";
print "<td border=\"0\" valign=\"top\" width=\"30%\"><b><center>Rodzaj porodu</center></b></td>";
print "<td border=\"0\" valign=\"top\" width=\"20%\"><b><center>Status</center></b></td></tr>";
$user=0;
if($_SESSION['userx']!=""){
$login = $_SESSION['userx'];
$result4=mysql_query("SELECT * FROM porody_ludzie WHERE login = '$login'");
$row4=mysql_fetch_array($result4);
if($row4['status']=="user"){
$user=1;
}
}
while($row3=mysql_fetch_array($result2))
{
$dzisiaj = getdate();
$rok = $dzisiaj['year'];
print "<tr><td align=\"center\">";
if(($row3['status']!="otwarty")&&($user==1)){
print ' ';
}else{
print "<INPUT TYPE=\"radio\" NAME=\"ludzie\" VALUE=\"$row3[id]\">";
}
print "</td>";
print "<td><center><font size=\"-1\"><a href=\"szczegoly.php?gdzie=$gdzie&&rekord=$row3[id]\" target=\"_blank\"><font color=\"black\">
$row3[numer]/$row3[rok] BI</font></a></font></center></td>";
print "<td><center><font size=\"-1\">$row3[data_por]</font></center></td>";
print "<td><center><font size=\"-1\">$row3[imie] $row3[nazwisko]</font></center></td>";
$rodzajPoroduResult=mysql_query("SELECT * FROM porody_rodzaje_porodow WHERE id = '$row3[rodzaj_p]'");
$rodzajPoroduRow=mysql_fetch_array($rodzajPoroduResult);
if($rodzajPoroduRow[nazwa]==""){
$rodzajPoroduRow[nazwa] = "---";
}
print "<td><center><font size=\"-1\">$rodzajPoroduRow[nazwa]</font></center></td>";
print "<td";
if($row3[status]=="otwarty"){
print ' bgcolor="yellow"';
}elseif($row3[status]=="zamknięty"){
print ' bgcolor="green"';
}
print "><center><font size=\"-1\">$row3[status]</font></center></td>";
print "</tr>";
}
print "</table><br>";
print "<input type=\"hidden\" name=\"action\" value=\"61\">";
print "<input type=\"hidden\" name=\"gdzie\" value=\"$gdzie\">";
print "<input type=\"hidden\" name=\"strona\" value=\"$strona\">";
print "<center><input type=\"submit\" name=\"ok\" value=\"Edytuj\">";
print "<input type=\"submit\" name=\"ok\" value=\"Kasuj\">";
print "<input type=\"submit\" name=\"ok\" value=\"Dodaj\">";
print "<center><input type=\"submit\" name=\"ok\" value=\"Zmień status\"></center>";
print "<input type=\"hidden\" name=\"a\" value=\"1234567890123456789012345678901234567890\">";
print "</form>";
?>
答案 0 :(得分:0)
不确定您发布的内容是否会导致问题(考虑到您没有发布所有代码,其他诸如缺少分号或引号等问题可能会导致问题,同时我们也不知道您是否关闭了输入字段)。
试试这个:
echo "<input type='hidden' name='a' value='123456789012345678901234567890'>";
我更改了转义的引号,因为根据您测试代码的位置而逃避的事情可能会导致问题(IE如果您使用网站测试短代码,则会双重逃避反斜杠)。还将打印更改为回显,因为回声速度稍微快一点,如果您习惯使用打印并移动到使用该实际打印(到打印机)的语言,则会让人感到困惑。
答案 1 :(得分:0)
你有jquery或某种javascript在加载后扫描页面。我已经看到,如果某处有错误,javascript函数可以锁定浏览器。
答案 2 :(得分:0)
输出缓冲是原因。我在开发服务器上重新安装了IIS和php,试图解决这个问题,并且输出缓冲设置为4096.我在php.ini文件中将其更改为On并且工作正常。在每个表或div块之后,最好使用ob_flush();和flush();然后用户将看到页面加载。如果在某些浏览器中没有它,它会将所有代码输出到一个块中的浏览器,这样在用户看到任何内容之前就会有一个大页面