在我的脚本第67行,在我将任何歌曲添加到列表之前,会显示echo语句"Your Song has been added to the list"。有人能告诉我为什么吗?它位于注释步骤8和步骤9之下。我已经用superpreme text 3设置了xdebug,但我不知道如何使用它。当我设置断点并运行脚本时,我在上下文窗格中得到了一堆未初始化的变量。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<head>
<title>Song Organizer</title>
</head>
<body>
<h1>Song Organizer</h1>
<?php
if (isset($_GET['action'])) {
if ((file_exists("SongOrganizer/songs.txt")) && (filesize("SongOrganizer/songs.txt") != 0)) {
$SongArray = file("SongOrganizer/songs.txt");
switch ($_GET['action']) {
case 'Remove Duplicates':
$SongArray = array_unique($SongArray);
$SongArray = array_values($SongArray);
break;
case 'Sort Ascending':
sort($SongArray);
break;
case 'Shuffle':
shuffle($SongArray);
break;
} // End of the Switch Statement
if (count($SongArray)>0) {
$NewSongs = implode($SongArray);
$SongStore = fopen("SongOrganizer/songs.txt", "wb");
if ($SongStore === false)
echo "There was an error updating the song file'n";
else {
fwrite($SongStore, $NewSongs);
fclose($SongStore);
}
}
else
unlink("SongOrganizer/songs.txt");
}
}
// Step 7
if (isset($_POST['submit'])) {
$SongToAdd = stripslashes($_POST['SongName']) . "'n";
$ExistingSongs = array();
if (file_exists("SongOrganizer/songs.txt") && filesize("SongOrganizer/songs.txt") > 0) {
$ExistingSongs = file("SongOrganizer/songs.txt");
}
}
// Step 8 and Step 9
if (in_array($SongToAdd, $ExistingSongs)) {
echo "<p>The song you entered already exists!<br />'n";
echo "Your song was not added to the list.</p>";
} else {
$SongFile = fopen("SongOrganizer/songs.txt", "ab");
if ($SongFile === false)
echo "There was an error saving your message!'n";
else {
fwrite($SongFile, $SongToAdd);
fclose($SongFile);
echo "Your Song has been added to the list.'n";
}
}
// Step 10
if ((!file_exists("SongOrganizer/songs.txt")) || (filesize("SongOrganizer/songs.txt") == 0))
echo "<p>There are no songs in the list.</p>'n";
else {
$SongArray = file("SongOrganizer/songs.txt");
echo "<table border='"1'" width='"100%'" style='"background-color:lightgray'">'n";
foreach ($SongArray as $Song) {
echo "<tr>'n";
echo "<td>" . htmlentities($Song) . "</td>";
echo "</tr>'n";
}
echo "</table>'n";
}
?>
<p>
<a href="SongOrganizer.php?action=Sort%20Ascending">Sort Song List</a><br />
<a href="SongOrganizer.php?action=Remove%20Duplicates">Remove Duplicate Songs</a><br />
<a href="SongOrganizer.php?action=Shuffle">Randomize Song List</a><br />
</p>
<form action="SongOrganizer.php" method="post">
<p>Add a New Song</p>
<p>Song Name: <input type="text" name="SongName" /></p>
<p><input type="submit" name="submit" value="Add Song to List" /><input type="reset" name="reset" value="Reset Song Name" /></p>
</form>
</body>
</html>
我认为问题的答案是步骤8和步骤9应该是步骤7中的嵌套if语句。像这样:
// Step 7
if (isset($_POST['submit'])) {
$SongToAdd = stripslashes($_POST['SongName']) . "'n";
$ExistingSongs = array();
if (file_exists("SongOrganizer/songs.txt") && filesize("SongOrganizer/songs.txt") > 0) {
$ExistingSongs = file("SongOrganizer/songs.txt");
// Step 8 and Step 9
if (in_array($SongToAdd, $ExistingSongs)) {
echo "<p>The song you entered already exists!<br />'n";
echo "Your song was not added to the list.</p>";
} else {
$SongFile = fopen("SongOrganizer/songs.txt", "ab");
if ($SongFile === false)
echo "There was an error saving your message!'n";
else {
fwrite($SongFile, $SongToAdd);
fclose($SongFile);
echo "Your Song has been added to the list.'n";
}
}
}
}