فرم دریافت اطلاعات کاربر و ذخیره در دیتابیس با PHP
ذخیره اطلاعات کاربر در دیتابیس با PHP – در خیلی از فرم ها نیاز است که اطلاعاتی درباره کاربر دریافت کنیم و در صورت لزوم آن را در بانک داده ذخیره کنیم .
برای همین موضوع در این آموزش قصد داریم اطلاعاتی همچون :
- نام و نام خانوادگی
- سن
- جنسیت
- وسایل نقلیه
- شماره تماس
- تصویر کاربر
را با فرم دریافت و پس از پردازش در دیتابیس ذخیره کنیم .
دموی برنامه
اسکریپت index.php
<?php if($_POST) require_once "process.php"; ?> <!DOCTYPE html> <html lang="fa"> <head> <meta charset="UTF-8"> <title>Rapidcode.iR - سورس کد</title> <link rel="stylesheet" href="static/css/main.css"> </head> <body> <div class="container"> <a id="introduce" href="https://rapidcode.ir" target="_blank">رپید کد • کتابخانه مجازی برنامه نویسان</a> <form action="" method="post" enctype="multipart/form-data"> <fieldset> <legend>اطلاعات کاربر</legend> <input required type="text" name="firstname" placeholder="نام"><br><br> <input required type="text" name="lastname" placeholder="نام خانوادگی"><br><br> <input required type="number" name="age" placeholder="سن"><br><br> <input required type="text" name="phone" placeholder="شماره تماس"><br><br> <label>جنسیت :</label><br> <label for="male">مذکر</label> <input type="radio" required name="gender" id="male" value="male"> <label for="female">مونث</label> <input type="radio" required name="gender" id="female" value="female"><br><br> <label>چه وسایل نقلیه ای دارید ؟</label><br> <label for="car">خودرو</label> <input type="checkbox" name="vehicles[]" id="car" value="خودرو"> <label for="bike">موتور</label> <input type="checkbox" name="vehicles[]" id="bike" value="موتور"> <label for="bicycle">دوچرخه</label> <input type="checkbox" name="vehicles[]" id="bicycle" value="دوچرخه"><br><br> <label for="user_avatar">تصویر شما :</label> <input type="file" id="user_avatar" name="user_avatar"> <div class="preview-container"> <div id="preview"></div> </div> </fieldset><br> <input type="submit" name="submit" value="ارسال"> </form> </div> <script src="static/js/app.js"></script> </body> </html>
دقت داشته باشید که form دارای ویژگی enctype=”multipart/form-data” جهت آپلود تصویر داشته باشد .
اسکریپت process.php
<?php require_once "db.php"; $file_data = $_FILES['user_avatar']; $allowed_image = ['image/png', 'image/jpg', 'image/jpeg']; if(!in_array($file_data['type'], $allowed_image)) die("فرمت نا معتبر"); $image_ext = str_replace('image/', '', $file_data['type']); $time = time(); $avatar_path = "avatar/{$time}.{$image_ext}"; $avatar_path_www = getBaseHttp(); $avatar_path_www .= "/{$avatar_path}"; $is_moved = move_uploaded_file($file_data['tmp_name'], $avatar_path); if(!$is_moved) die("خطایی در ذخیره تصویر به وجود آمده"); unset($_POST['submit']); $_POST['user_avatar'] = $avatar_path_www; $data = json_encode($_POST); $id = setData("INSERT INTO {$table} (udata) VALUES (?)",[$data]); $basehttp = getBaseHttp(); header("Location: http://{$basehttp}/user.php?id={$id}"); $stmt->close(); $mysqli->close(); ?>
آرایه allowed_image دارای لیستی از فرمت های معتبر برای عکس می باشد که جهت جلوگیری از آپلود اسکریپت به هاست توسط کاربر می باشد .
اسکریپت db.php
این script برای دریافت و ثبت اطلاعات در دیتابیس می باشد .
<?php $mysqli = new mysqli("localhost", "root", "", "cms"); $table = 'user_data'; if ($mysqli->connect_error) { die("MYSQL ISSUE : " . $mysqli->connect_error); } $mysqli->set_charset("utf8"); $stmt = $mysqli->stmt_init(); function get_user_data($uid){ global $table; $data = getData("select * from `{$table}` WHERE id=?" , [$uid]); $data = end($data); return $data; } function getData($uquery,$data){ global $mysqli; global $stmt; $query = $uquery; $rows = []; $stmt->prepare($query); $stmt->bind_param(str_repeat("s",count($data)), ...$data); if ($stmt->execute() && $res = $stmt->get_result()) { if ($stmt->affected_rows || $res->num_rows) { while ($row = $res->fetch_assoc()) { $rows[] = $row; } } } return $rows; } function setData($uquery , $data){ global $mysqli; global $stmt; $query = $uquery; $stmt->prepare($query); $type = str_repeat("s",count($data)); $stmt->bind_param($type, ...$data); $inserted_id=0; if ($stmt->execute()) { $inserted_id = $stmt->affected_rows ? $stmt->insert_id : 0; } return $inserted_id; } function getBaseHttp(){ $path_www = $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']; $path_www = explode("/", $path_www); $path_www_size = count($path_www)-1; unset($path_www[$path_www_size]); $path_www = implode("/", $path_www); return $path_www; } ?>
اسکریپت user.php
با کمک این فایل می توانیم اطلاعاتی که از کاربر در دیتابیس ذخیره شده است را نمایش دهیم .
<?php $uid = @$_GET['id']; if(!$uid) die("شناسه کاربر وارد نشده"); require_once "db.php"; $user_data = get_user_data($uid); if(!$user_data) die("کاربر در دیتابیس یافت نشد"); $udata = json_decode($user_data['udata'] , true); ?> <!DOCTYPE html> <html lang="fa"> <head> <meta charset="UTF-8"> <title>Rapidcode.iR - سورس کد</title> <link rel="stylesheet" href="static/css/main.css"> </head> <body> <div class="container"> <a id="introduce" href="https://rapidcode.ir" target="_blank">رپید کد • کتابخانه مجازی برنامه نویسان</a> <table> <tr> <td>تصویر پروفایل</td> <td><img src="http://<?php echo $udata['user_avatar'] ?>"></td> </tr> <tr> <td>نام</td> <td><?php echo $udata['firstname'] ?></td> </tr> <tr> <td>نام خانوادگی</td> <td><?php echo $udata['lastname'] ?></td> </tr> <tr> <td>سن</td> <td><?php echo $udata['age'] ?></td> </tr> <tr> <td>شماره تماس</td> <td><?php echo $udata['phone'] ?></td> </tr> <tr> <td>جنسیت</td> <td><?php echo $udata['gender'] ?></td> </tr> <tr> <td>وسایل نقلیه</td> <td><?php echo join(", " , $udata['vehicles']) ?></td> </tr> </table> <a href="http://<?php echo getBaseHttp(); ?>">بازگشت</a> </div> <script src="static/js/app.js"></script> </body> </html>
استایل برنامه با main.css
td img{ width: 75px; } .preview-container{ text-align: center; } #preview{ display: inline-block; width: 100px; height: 100px; background-size: 100px; }
اسکریپت app.js
جهت پیش نمایش تصویر کاربر قبل از آپلود تصویر
const freader = new FileReader(); const fileInpDOM = document.getElementById("user_avatar"); if(fileInpDOM) fileInpDOM.addEventListener("change" , loadFileReader); function loadFileReader(event){ const files = event.target.files; const file = files[0];console.log(file); if(!file) return false; freader.readAsDataURL(file); freader.onload = function(event){ const result = event.target.result; const img = document.getElementById("preview"); img.setAttribute("style" , `background-image:url(${result});`); } }
قبل از اجرای برنامه وارد پوشه DB To Import شده cms را import کنید
لیست نظرات
سلام من میخوام داخل یک صفحه جداگانه، تمامی افراد که ثبت نام کردند رو ببینم چکار باید کنم؟
درود ، سورس جدیدی آپلود شده می تونید استفاده کنید . بعد از وارد کردن اطلاعات وارد مسیر user_all.php بشید و لیست تمامی کاربران رو می بینید .
سلام . اگر بخوایم بجای وارد کردن سن ، تاریخ تولد به صورت شمسی از کاربر دریافت کنیم چطوری باید به برنامه اضافه کنیم؟ من از کتابخانه jdate , datepicker استفاده کردم ولی اعمال نشد. نمیدونم مشکل از کجاست!! امکانش هست راهنمایی بفرمائید.
طبق این آموزش پیش برید
سلام، چه عالی 😍 دستتون دردنکنه از آموزش خوبتون. یه سوال داشتم؛ چطوری میشه چندصفحه رو بهم متصل کرد؟ صفحه لاگین، ثبتنام و تغییر رمز و پروفایل فرد رو؟ پروژه کلاسیم هست و مهلتش کمه. و اینکه از تو گیتهاب خیلی نمونه دانلود کردم اما با وجود نصب xampp و vs code برنامه ها اجرا نمیشه!
سلام ، کافیه که هر عملی انجام میشه به صفحه دیگه ریدایرکت کنید : مثلا بعد از تایید حساب به صفحه لاگین هدایت بشه تکه کد برای ریدایرکت