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

گام نخست، ساختن یک فرم تماس در قالب کدهای html است تا اطلاعات آن پس از ارسال، به سرور منتقل و در آنجا توسط سیستم ایمیل  به آدرس مدیر ارسال گردد؛ لذا بدین منظور ابتدا فرم زیر را نوشته و آن را در یک فایل با نام فرضی index.php ذخیره می‌کنیم. 

<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="message">پيام</label>
  <textarea id="message" name="visitor_message" cols="35" rows="8" required></textarea><br />
  <button type="submit">ارسال پيام</button>
</form>
</body>
</html>

کدهای CSS به کار رفته برای بهتر نمایش دادن این فرم را نیز می‌توانید در ادامه ملاحظه کنید :(در فایلی با نام yourCSS.css ذخیره شده است.)

body{
  font-family:Tahoma, Geneva, sans-serif;
  font-size:12px;
  direction:rtl;
}
label{
  display:inline-block;
  width:100px;
  height:25px;
  vertical-align:top;
}
.code{
  width:50px;
  margin-top:2px;
}

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

<html>
<head>
  <meta charset="utf-8">
  <title>تماس با ما</title>
  <link rel="stylesheet" type="text/css" href="yourCSS.css" />
</head>
<body>
<?php
$recipient = "zari.fateh@gmail.com";
if($_POST) {
    $visitor_name = "";
    $visitor_email = "";
    $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['visitor_message'])) {
        $visitor_message = htmlspecialchars($_POST['visitor_message']);
    }
    $headers  = 'MIME-Version: 1.0' . "\r\n"
    .'Content-type: text/html; charset=utf-8' . "\r\n"
    .'From: ' . $visitor_email . "\r\n";
    if(mail($recipient, $visitor_message, $headers)) {
        echo "<p>با تشکر از تماس شما, $visitor_name عزيز . تا 24 ساعت آبنده پاسخ خود را دريافت خواهيد کرد.</p>";
    } else {
        echo "<p>خطا در ارسال ايميل! تنظيمات سرور شما از اين امکان پشتيباني نمي کند</p>";
    }
} else {
    echo '<p>مشکلي وجود دارد.</p>';
}
?>
</body>
</html>

 

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

گام نخست، ساختن یک فرم تماس در قالب کدهای html است تا اطلاعات آن پس از ارسال، به سرور منتقل و در آنجا توسط سیستم ایمیل  به آدرس مدیر ارسال گردد؛ لذا بدین منظور ابتدا فرم زیر را نوشته و آن را در یک فایل با نام فرضی index.php ذخیره می‌کنیم. 

<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="message">پيام</label>
  <textarea id="message" name="visitorMessage" cols="35" rows="8" required></textarea><br />
  <button type="submit">ارسال پيام</button>
</form>
</body>
</html>

کدهای CSS به کار رفته برای بهتر نمایش دادن این فرم مطابق روش اول می‌باشد. ابتدا لازم است که یک دیتابیس، جدول بسازیم و سپس با کدهای php، اطلاعات را در آن ذخیره کنیم.

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

برای ساختن دیتابیس، در لوکال هاست یا در سرور از برنامه phpMyAdmin استفاده کرده و یک دیتابیس به صورت دستی با نام فرضی contact بسازید (دقت کنید که یونیکد یا collation پیش فرض دیتابیس بر روی utf8_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 infoContact (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    fullname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    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 گفتیم، اطلاعات ارسال شده از فایل index.php به یک فایل دیگر به نام contact.php فرستاده می‌شود، در این فایل کدهای زیر را قرار می‌دهیم.

<!DOCTYPE html>
<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'];
$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 infoContact (fullname,email,msgText) VALUES ('$visitorName','$visitorEmail','$visitorMessage')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "اطلاعات با موفقيت ثبت شد.";
}
catch(PDOException $e){
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
</body>
</html>

توجه : بعد از ارسال فرم، می‌بایست اطلاعات پردازش و اعتبار سنجی و سپس ذخیره شوند. (هر دو پاسخ بدون پردازش و اعتبارسنجی اطلاعات فرمها نوشته شده.)

زری فاتح ۰۲ فروردین ۱۳۹۹، ۱۷:۳۲