دانیال جناب
9 ماه پیش توسط دانیال جناب مطرح شد
1 پاسخ

چطور اطلاعات فرم را د ر یک فایل متنی را با php ذخیره کنم

چطور می‌تونم یک فرم ساده با PHP بسازم که اطلاعات ورودی رو دریافت و در یک فایل ذخیره کنه؟


ثبت پرسش جدید
علی بهاری
تخصص : برنامه نویس
@alibahari 3 ساعت پیش مطرح شد
0

<?php
/**

  • فرم ساده PHP برای دریافت اطلاعات و ذخیره در فایل
  • این اسکریپت یک فرم HTML ایجاد می‌کند، داده‌های ارسالی را دریافت و اعتبارسنجی می‌کند،
  • سپس اطلاعات را در یک فایل متنی ذخیره می‌کند.
  • ویژگی‌ها:
    • اعتبارسنجی سمت سرور (نام، ایمیل، متن)
    • پاکسازی داده‌ها برای جلوگیری از XSS
    • قابلیت افزودن داده جدید بدون حذف داده‌های قبلی
    • نمایش پیام موفقیت/خطا
    • قالب‌بندی منظم داده‌ها با تاریخ و زمان
      */

// مسیر فایل مقصد (می‌توانید مسیر را تغییر دهید)
$dataFile = DIR . '/formData.txt';

// بررسی نوع درخواست (GET برای نمایش فرم، POST برای پردازش داده‌ها)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// دریافت و پاکسازی داده‌های ارسالی
$name = trim(htmlspecialchars($_POST['name'] ?? '', ENT_QUOTES, 'UTF-8'));
$email = trim(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL));
$message = trim(htmlspecialchars($_POST['message'] ?? '', ENT_QUOTES, 'UTF-8'));

// اعتبارسنجی داده‌ها
$errors = [];

if (empty($name)) {
    $errors[] = 'نام الزامی است.';
}

if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $errors[] = 'ایمیل معتبر وارد کنید.';
}

if (empty($message)) {
    $errors[] = 'پیام الزامی است.';
}

// اگر خطایی وجود نداشت، داده‌ها را ذخیره کنید
if (empty($errors)) {
    // ساخت رشته داده با فرمت منظم
    $dataLine = sprintf(
        "[%s] نام: %s | ایمیل: %s | پیام: %s\n",
        date('Y-m-d H:i:s'), // تاریخ و ساعت فعلی
        $name,
        $email,
        $message
    );

    // ذخیره در فایل (افزودن به انتهای فایل)
    if (file_put_contents($dataFile, $dataLine, FILE_APPEND | LOCK_EX)) {
        $successMessage = 'اطلاعات با موفقیت ثبت شد!';
    } else {
        $errors[] = 'خطا در ذخیره اطلاعات. لطفاً مجدد تلاش کنید.';
    }
}

}

?>

<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<title>فرم ثبت اطلاعات</title>
<style>
body { font-family: Arial, sans-serif; max-width: 600px; margin: 20px auto; padding: 20px; }
.error { color: #d32f2f; background-color: #ffebee; padding: 10px; border-radius: 5px; margin-bottom: 15px; }
.success { color: #388e3c; background-color: #e8f5e9; padding: 10px; border-radius: 5px; margin-bottom: 15px; }
input, textarea { width: 100%; padding: 8px; margin-bottom: 10px; box-sizing: border-box; }
button { background-color: #1976d2; color: white; padding: 10px 15px; border: none; cursor: pointer; }
button:hover { background-color: #1565c0; }
</style>
</head>
<body>

<h1>فرم ثبت اطلاعات</h1>

<!-- نمایش خطاها -->
<?php if (!empty($errors)): ?>
<div class="error">
<?php foreach ($errors as $error): ?>
<p><?= $error ?></p>
<?php endforeach; ?>
</div>
<?php endif; ?>

<!-- نمایش موفقیت -->
<?php if (isset($successMessage)): ?>
<div class="success"><?= $successMessage ?></div>
<?php endif; ?>

<!-- فرم HTML -->
<form method="post" action="<?= htmlspecialchars($_SERVER['PHP_SELF']) ?>">
<label for="name">نام:</label>
<input type="text" id="name" name="name" value="<?= isset($name) ? htmlspecialchars($name) : '' ?>" required>

<label for="email">ایمیل:</label>
<input type="email" id="email" name="email" value="<?= isset($email) ? htmlspecialchars($email) : '' ?>" required>

<label for="message">پیام:</label>
<textarea id="message" name="message" rows="5" required><?= isset($message) ? htmlspecialchars($message) : '' ?></textarea>

<button type="submit">ارسال</button>

</form>

</body>
</html>


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام