Я использую функцию deleteFiles () в моей программе PHP для удаления каталогов. Это работает только когда я передаю явно определенные строки, но не когда я передаю строку, соединенную с переменными.
Это не работает:
// Checks if the user hit the delete button
if(isset($_POST['delete'])){
$targetDir = "uploads/$id/"; ### This does not work when I pass it in
deleteFiles($targetDir);
// Get the id to delete
$idToDelete = mysqli_real_escape_string($conn, $_POST['idToDelete']);
// Create sql
$sql = "DELETE FROM student_data WHERE id = $idToDelete";
// Redirects user to the homepage if the query is successful
if(mysqli_query($conn, $sql)){
header('Location: index.php');
} else {
echo 'query error: '. mysqli_error($conn);
}
}
function deleteFiles($target) {
$files = glob($target . "/*"); // get all file names
foreach($files as $file){ // iterate files
if(is_file($file)) {
unlink($file); // delete file
}
}
rmdir($target);
}
Это работает:
// Checks if the user hit the delete button
if(isset($_POST['delete'])){
$targetDir = "uploads/82/"; ### If I pass in this it works
deleteFiles($targetDir);
// Get the id to delete
$idToDelete = mysqli_real_escape_string($conn, $_POST['idToDelete']);
// Create sql
$sql = "DELETE FROM student_data WHERE id = $idToDelete";
// Redirects user to the homepage if the query is successful
if(mysqli_query($conn, $sql)){
header('Location: index.php');
} else {
echo 'query error: '. mysqli_error($conn);
}
}
function deleteFiles($target) {
$files = glob($target . "/*"); // get all file names
foreach($files as $file){ // iterate files
if(is_file($file)) {
unlink($file); // delete file
}
}
rmdir($target);
}
Я попытался сравнить 2 строки, используя оператор ===, и он возвращает 1 Не знаю, почему это происходит.