登录后出现PHP未定义索引错误
我已经从互联网上下载了这个项目,并试图访问的网页,这是好的。但在登录到desire个人资料后,我只得到了这种我无法解决的错误。有人能帮我吗 错误页面的截图。 出现错误的页面 friends.php登录后出现PHP未定义索引错误,php,html,Php,Html,我已经从互联网上下载了这个项目,并试图访问的网页,这是好的。但在登录到desire个人资料后,我只得到了这种我无法解决的错误。有人能帮我吗 错误页面的截图。 出现错误的页面 friends.php <?php if(!isset($_SESSION)){ session_start(); } include("profilesql.php"); $result = mysql_query("SELECT * FROM addfriends where meid='$_SESSIO
<?php
if(!isset($_SESSION)){
session_start();
}
include("profilesql.php");
$result = mysql_query("SELECT * FROM addfriends where meid='$_SESSION[stuid]' ");
while($row = mysql_fetch_array($result))
{
$uid1[$i] = $row["friendid"];
$i++;
}
$acrec1 = mysql_query("SELECT * FROM addfriends WHERE userid='$uid1[1]'");
while($row = mysql_fetch_array($acrec2))
{
$img1[0]= $row["image"];
}
$acrec2 = mysql_query("SELECT * FROM addfriends WHERE userid='$uid1[2]'");
while($row = mysql_fetch_array($acrec2))
{
$img1[1]= $row["image"];
}
$acrec3 = mysql_query("SELECT * FROM profile WHERE userid='$uid1[3]' ");
while($row = mysql_fetch_array($acrec3))
{
$img1[2]= $row["image"];
}
$acrec4 = mysql_query("SELECT * FROM profile WHERE userid='$uid1[4]' ");
while($row = mysql_fetch_array($acrec4))
{
$img1[3]= $row["image"];
}
?>
这些都是严格的错误-这些错误不是致命的,而是不安全代码的迹象。许多是因为缺少数组键,这意味着您正在访问的数组键没有定义。要停止错误,在访问可能不存在的数组键之前,需要检查它们是否已设置。例如:
if($row["userid"] != $_SESSION["stuid"] )
变成
if(!isset($_SESSION["stuid"] || $row["userid"] != $_SESSION["stuid"])
对于未定义的变量警告,您需要事先定义变量,或者在访问它们时检查它们是否已设置。对于您的使用,您可能只需定义未设置的:
$uid1 = array();
最后,您可能无意中使用了错误的变量。第一个while($row=mysql\u fetch\u数组($acrec2))
应该是while($row=mysql\u fetch\u数组($acrec1))
不过,这里的许多代码效率很低。例如,您正在运行多个查询,以查找在一个查询中可以完成的操作。考虑使用A来获取所有“朋友”,而不是对每个用户执行一个查询。 将您的脚本包含在<代码>如果语句:
friends.php
<?php
if(!isset($_SESSION)){
session_start();
include("profilesql.php");
$result = mysql_query("SELECT * FROM addfriends where meid='$_SESSION[stuid]' ");
while($row = mysql_fetch_array($result))
{
$uid1[$i] = $row["friendid"];
$i++;
}
$acrec1 = mysql_query("SELECT * FROM addfriends WHERE userid='$uid1[1]'");
while($row = mysql_fetch_array($acrec2))
{
$img1[0]= $row["image"];
}
$acrec2 = mysql_query("SELECT * FROM addfriends WHERE userid='$uid1[2]'");
while($row = mysql_fetch_array($acrec2))
{
$img1[1]= $row["image"];
}
$acrec3 = mysql_query("SELECT * FROM profile WHERE userid='$uid1[3]' ");
while($row = mysql_fetch_array($acrec3))
{
$img1[2]= $row["image"];
}
$acrec4 = mysql_query("SELECT * FROM profile WHERE userid='$uid1[4]' ");
while($row = mysql_fetch_array($acrec4))
{
$img1[3]= $row["image"];
}
}
?>
很明显,您的错误显示未设置$\u会话[stuid]
。即使您正在检查会话是否未设置,SESSION\u start(),也尝试将其设置为$\u SESSION['stuid']
代码>必须位于顶部。然后你就可以设定你的条件,而不是现在的方式。另外,它必须在您的所有文件中。检查此提示您确定project没有更新的版本吗?他们在其他蹩脚的编码实践中使用mysql\u查询(ORDER BY RAND()
,使用SELECT*
,并且只使用一列,不转义查询中的任何内容,第一列while($row=mysql\u fetch\u array($acrec2))
应该是while($row=mysql\u fetch\u array($acrec1))
,等等).它在friends.php中按我输入的代码排序。但是profile.php中仍然存在错误。查看我正在上传的更新屏幕截图
<?php
if(!isset($_SESSION)){
session_start();
include("profilesql.php");
$result = mysql_query("SELECT * FROM addfriends where meid='$_SESSION[stuid]' ");
while($row = mysql_fetch_array($result))
{
$uid1[$i] = $row["friendid"];
$i++;
}
$acrec1 = mysql_query("SELECT * FROM addfriends WHERE userid='$uid1[1]'");
while($row = mysql_fetch_array($acrec2))
{
$img1[0]= $row["image"];
}
$acrec2 = mysql_query("SELECT * FROM addfriends WHERE userid='$uid1[2]'");
while($row = mysql_fetch_array($acrec2))
{
$img1[1]= $row["image"];
}
$acrec3 = mysql_query("SELECT * FROM profile WHERE userid='$uid1[3]' ");
while($row = mysql_fetch_array($acrec3))
{
$img1[2]= $row["image"];
}
$acrec4 = mysql_query("SELECT * FROM profile WHERE userid='$uid1[4]' ");
while($row = mysql_fetch_array($acrec4))
{
$img1[3]= $row["image"];
}
}
?>