💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ زری فاتح
مینی پروژه شماره 2: تماس با بخش‌های مختلف سایت
جامعه پی اچ پی ایجاد شده در ۰۳ فروردین ۱۳۹۹

روش 1- ارسال پیام از طریق ایمیل

گام اول : ایجاد فرم

<html>
<head>
  <meta charset="utf-8">
  <title>تماس با ما</title>
  <link rel="stylesheet" type="text/css" href="yourCSS.css" />
</head>
<body>
<form action="contact.php" method="post">
  <label for="name">نام شما: </label>
  <input type="text" id="name" name="visitor_name" required><br />
  <label for="email">ايميل شما: </label>
  <input type="email" id="email" name="visitor_email" required><br />
  <label for="department-selection">دپارتمان مربوطه: </label>
    <select id="department-selection" name="concerned_department" required>
        <option value="">انتخاب دپارتمان</option>
        <option value="Technical">فني</option>
        <option value="Financial">مالي</option>
        <option value="Management">مديريت</option>
        <option value="Support">پشتيباني</option>
    </select><br />
  <label for="title">موضوع: </label>
  <input type="text" id="title" name="title"  /*pattern=[A-Za-z0-9\s]{8,60}*/><br />
  <label for="message">پيام</label>
  <textarea id="message" name="visitor_message" cols="35" rows="8" required></textarea><br />
  <button type="submit">ارسال پيام</button>
</form>  
</body>
</html>

گام دوم : همان طور که در بالا و در قسمت کد html گفتیم، اطلاعات ارسال شده از فایل بالا به یک فایل دیگر به نام contact.php فرستاده می‌شود (البته می‌توانید برنامه خود را طوری بنویسید که اطلاعات به همان فایل ارسال شوند و نیازی به یک فایل دیگر نباشد)، در این فایل کدهای زیر را قرار می‌دهیم.

<html>
<head>
  <meta charset="utf-8">
  <title>تماس با ما</title>
  <link rel="stylesheet" type="text/css" href="yourCSS.css" />
</head>
<body>
<?php
if($_POST) {
    $visitor_name = "";
    $visitor_email = "";
    $title = "";
    $concerned_department = "";
    $visitor_message = "";
    if(isset($_POST['visitor_name'])) {
        $visitor_name = filter_var($_POST['visitor_name'], FILTER_SANITIZE_STRING);
    }
    if(isset($_POST['visitor_email'])) {
        $visitor_email = str_replace(array("\r", "\n", "%0a", "%0d"), '', $_POST['visitor_email']);
        $visitor_email = filter_var($visitor_email, FILTER_VALIDATE_EMAIL);
    }
    if(isset($_POST['email_title'])) {
        $email_title = filter_var($_POST['title'], FILTER_SANITIZE_STRING);
    }
    if(isset($_POST['concerned_department'])) {
        $concerned_department = filter_var($_POST['concerned_department'], FILTER_SANITIZE_STRING);
    }
    if(isset($_POST['visitor_message'])) {
        $visitor_message = htmlspecialchars($_POST['visitor_message']);
    }
    if($concerned_department == "Technical") {
        $recipient = "technical@domain.com";
    }
    else if($concerned_department == "Financial") {
        $recipient = "financial@domain.com";
    }
    else if($concerned_department == "Management") {
        $recipient = "management@domain.com";
    }
    else if($concerned_department == "Support") {
        $recipient = "support@domain.com";
    }
    else {
        $recipient = "contact@domain.com";
    }
    $headers  = 'MIME-Version: 1.0' . "\r\n"
    .'Content-type: text/html; charset=utf-8' . "\r\n"
    .'From: ' . $visitor_email . "\r\n";
    if(mail($recipient, $title, $visitor_message, $headers)) {
        echo "<p>با تشکر از تماس شما, $visitor_name. تا 24 ساعت آبنده پاسخ خود را دريافت خواهيد کرد.</p>";
    } else {
        echo '<p>متأسفيم اما نامه الکترونيکي طي نشد.</p>';
    }
} else {
    echo '<p>مشکلي پيش آمد.</p>';
}
?>
</body>
</html>

روش 2 - ذخیره پیام کاربر در دیتابیس

گام اول:  ایجاد فرم

<html>
<head>
  <meta charset="utf-8">
  <title>تماس با ما</title>
  <link rel="stylesheet" type="text/css" href="yourCSS.css" />
</head>
<body>
<form action="contact.php" method="post">
  <label for="name">نام شما: </label>
  <input type="text" id="name" name="visitorName" required><br />
  <label for="email">ايميل شما: </label>
  <input type="email" id="email" name="visitorEmail" required><br />
  <label for="department-selection">دپارتمان مربوطه: </label>
    <select id="department-selection" name="department" required>
        <option value="">انتخاب دپارتمان</option>
        <option value="Technical">فني</option>
        <option value="Financial">مالي</option>
        <option value="Management">مديريت</option>
        <option value="Support">پشتيباني</option>
    </select><br />
  <label for="title">موضوع: </label>
  <input type="text" id="title" name="titleMessage"  /*pattern=[A-Za-z0-9\s]{8,60}*/><br />
  <label for="message">پيام</label>
  <textarea id="message" name="visitorMessage" cols="35" rows="8" required></textarea><br />
  <button type="submit">ارسال پيام</button>
</form>  
</body>
</html>

گام دوم : ساخت دیتابیس و جدول برای فرم تماس

برای ساختن دیتابیس، در لوکال هاست از برنامه phpMyAdmin استفاده کرده و یک دیتابیس به صورت دستی با نام فرضی contact بسازید (دقت کنید که یونیکد یا collation پیش فرض دیتابیس بر روی utf۸_general_ci باشد)؛ سپس در یک فایل php ، کد زیر را ذخیره و اجرا کنید تا جدول در دیتابیس contact ایجاد شود:

<?php
//اطلاعات اتصال به ديتابيس
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "contact";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // sql to create table
    $sql = "CREATE TABLE infoContact2 (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    fullname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    department ENUM('Technical','Financial','Management','Support'),
    titleMessage VARCHAR(255),
    msgText TEXT
    )";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "Table infoContact created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }
//پايان ارتباط    
$conn = null;
?>

گام سوم : همان طور که در بالا و در قسمت کد html گفتیم، اطلاعات ارسال شده به یک فایل دیگر به نام contact.php فرستاده می‌شود، در این فایل کدهای زیر را قرار می‌دهیم.

<html>
<head>
  <meta charset="utf-8">
  <title>تماس با ما</title>
  <link rel="stylesheet" type="text/css" href="yourCSS.css" />
</head>
<body>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "contact";
$visitorName = $_POST['visitorName'];
$visitorEmail = $_POST['visitorEmail'];
$department = $_POST['department'];
$titleMessage = $_POST['titleMessage'];
$visitorMessage = $_POST['visitorMessage'];
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO infoContact2 (fullname,email,department,titleMessage,msgText) VALUES ('$visitorName','$visitorEmail','$department','$titleMessage','$visitorMessage')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "اطلاعات با موفقيت ثبت شد.";
}
catch(PDOException $e){
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
</body>
</html>