xampp — HTML-формы, fwrite и переполнение стека

Я хочу использовать fwrite для сохранения данных в файл .txt. Метод действия, кажется, работает, так как он может отображать теги HTML при передаче при нажатии кнопки отправки, но я не буду запускать PHP.

<HTML lang="da">
<style>
</style>

<header>
<title>Tilføj</title>
<meta charset="ISO-8859-1">
</header>

<body>

<form method="post" action="eksamen_save_data.php" enctype='multipart/form-data'>

<fieldset>
<legend>Filmoplysninger</legend>
<div><label>Titel: <input type="text" name="titel" id="titel" required="required" size="60" maxlength="100"></label></div>
<div><label>Hovedskuespiller: <input type="text" name="hovedskuespiller" id="hovedskuespiller" required="required" size="30" maxlength="100"></label></div>
<div><label>Genre: <input type="text" name="genre" id="genre" required="required" size="60" maxlength="100"></label></div>
<div><label>Format: <input type="text" name="format" id="format" required="required" size="60" maxlength="100"></label></div>
<div><label>Billede: <input type="file" name="billede" id="billede" required="required"></label></div>
</fieldset>

<div><input type="submit" id="ok" value="OK"></div>
</form>

</body>

Это отправляет его в «eksamen_save_data.php», который выглядит следующим образом:

<?php
$Titel = $_POST["titel"];
$Hovedskuespiller = $_POST["hovedskuespiller"];
$Genre = $_POST["genre"];
$Format = $_POST["format"];
//$Billede = $_FILES["billede"]["navn"];

//if($_FILES){
//  move_uploaded_file($_FILES["billed"]["navn"], $_FILES["billed"]["navn"]);
//}

$user_data = "$Titel, $Hovedskuespiller, $Genre, $Format, $Billede \r\n";

$fh = fopen("data.txt", "a") or die("Fejl i åbning af fil!");
fwrite($fh, $user_data) or die ("Fejl i skrivning til fil!");
fclose($fh);
?>

Если я напишу какой-нибудь HTML-код в «eksamen_save_data.php», я это покажу, но PHP не запустится. Я использую XAMPP.
Проблема в том, что он не сохранится в файл «data.txt», как я говорю PHP.

Другой вопрос; Есть ли способ, я могу заставить PHP работать в том же файле, где у меня есть мой fieldset?

ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ:

Большую часть времени это маленькие ошибки, которые оказываются самой большой проблемой. Для меня лично я забыл использовать: localhost / eksamen_tilføj.php в браузере.

Так что я сделал ошибку в XAMPP.

0

Решение

использование file_put_contents

file_put_contents("data.txt", $user_data, FILE_APPEND);

Он выполняет все работы, такие как открытие, запись и закрытие файла. Преимущество в том, что если файл не существует, он будет создан.

Найти полный рабочий код

<?php
$Titel = $_POST["titel"];
$Hovedskuespiller = $_POST["hovedskuespiller"];
$Genre = $_POST["genre"];
$Format = $_POST["format"];
$Billede = $_FILES["billede"]["name"];
// Example of accessing data for a newly uploaded file
$fileName = $_FILES["billede"]["name"];
$fileTmpLoc = $_FILES["billede"]["tmp_name"];
// Path and file name
$pathAndName = "upload/".$fileName;
// Run the move_uploaded_file() function here
$moveResult = move_uploaded_file($fileTmpLoc, $pathAndName);
// Evaluate the value returned from the function if needed
if ($moveResult == true) {
echo "File has been moved from " . $fileTmpLoc . " to" . $pathAndName;
} else {
echo "ERROR: File not moved correctly";
}

$user_data = "$Titel, $Hovedskuespiller, $Genre, $Format, $Billede \r\n";
file_put_contents("data.txt", $user_data, FILE_APPEND);
?>
0

Другие решения

вам придется удалить третий параметр $test (потому что это определяет длину контента, который будет написан). Но $test не определен в вашем файле PHP, поэтому он не будет ничего писать ..

Так что измени это

fwrite($fh, $user_data, $test) or die ("Fejl i skrivning til fil!");

в это

fwrite($fh, $user_data) or die ("Fejl i skrivning til fil!");

и взглянуть на этот 🙂

0

Что касается вашего второго вопроса: уверен, что вы можете объединить свою форму и представить сценарии:

<?php
if(count($_POST) > 0) { //
/** Form submit function, file write **/
} else {
?>
<html>
<form action="#" method="POST">
<!-- Enter HTMLform here -->
</form>
</html>
<?php } ?>

Этот псевдокод не очень хорош, но подойдет для объяснения вещей. # в форме действие означает, что тот же сценарий должен быть вызван при отправке. if(count($_POST) > 0) проверяет, были ли данные представлены. Если это так, файл будет записан. В противном случае форма будет отображаться.

Удачи.

0
По вопросам рекламы [email protected]