• اطلاعیه ها

    • Saeed Fard

      برگزاری میتاپ وردپرسی   14/08/96

      بعد از اولین دوره همایش وردپرس در ایران اگر پیگیر اخبار وردپرس بوده باشید، حتما خبر برگزاری چندین میتاپ و جلسه متعدد وردپرسی را شنیده‌اید، یکی از بحث‌های اصلی که محور اصلی این میتاپ‌ها بوده است برگزاری وردکمپ بود که به طور جدی دنبال می‌شود. این میتاپ‌ها و جلسات توسط جمعی از فعلان حوزه وردپرس در کنار وردپرس‌پارسی برگزار می‌شد و مسائل مربوط به این حیطه و از جمله وردکمپ مورد بحث قرار می‌گرفت. این بار با رایزنی‌هایی که با تیم اصلی وردپرس داشتیم در بخش دوم این رویدادها قصد داریم که میتاپ‌ها و جلسات وردپرسی را به صورت آزاد برگزار کنیم تا تمامی علاقه‌مندان و دوست‌داران وردپرس فرصت حضور داشته باشند و با گردهمایی، جامعه کاملتری از دوست داران وردپرس بسازیم و از تجربیات یکدیگر استفاده کنیم.   بدیهی است که این رویدادها با رویکرد مثبت در جهت سود رسانی به جامعه وردپرس و افراد حاضر در آن برگزار می‌شود و برای تمامی علاقه‌مندان به وردپرس است. پس اگر یک کاربر معمولی وردپرس یا یک توسعه دهنده هستید می‌توانید در این رویدادها شرکت کنید. ما در ملاقات‌هایمان از موارد مختلف و کاربردی وردپرس صحبت می‌کنیم و علاقمند به توسعه هر چه بیشتر وردپرس در ایران هستیم. ما وردپرس را دوست داریم. عضویت در این گروه برای همه افرادی که مایل به پیوستن هستند بدون در نظرگرفتن توانایی‌ها، مهارت‌ها، وضعیت مالی و یا معیارهای دیگر باز و رایگان است. فضای میتاپ‌ها و جلسات ما دوستانه و آزادنه و دور از هرگونه تبعیض و رفتارهای زننده است. بر این اساس از تمامی دوستانی که علاقه‌مند به شرکت در میتاپ‌های وردپرس هستند دعوت می‌شود تا از طریق لینک زیر در سایت میتاپ اقدام به ثبت‌نام کنند و منتظر خبرهای برگزاری جلسات در آینده باشند . لینک ثبت نام و عضویت : https://www.meetup.com/Iran-WordPress-Meetup    
    • Saeed Fard

      نسخه جدید وردپرس پارسی رونمایی شد   05/09/96

      در پنجمین سال فعالیت از وردپرس پارسی و بعد از ارائه خدمات و سرویس‌های متفاوت به جامعه وردپرس ، برآن شدیم که نسخه جدید سایت وردپرس‌پارسی را بر اساس نیازها و خدمات جدیدی که قرار است ارائه شود طراحی و رونمایی کنیم ، از این جهت امروز یک ورژن از نسخه جدید رونمایی شد. در ادامه به معرفی بخش‌های مختلف سایت می‌پردازیم.     در دوره فعالیت گروه وردپرس‌پارسی بیش از 13 افزونه مختلف به صورت رایگان از طرف گروه برای وردپرس نوشته و منتشر شد که در مجموع دارای 100هزار نصب فعال روی سایت‌های وردپرسی است و 500هزاربار از مخزن پلاگین‌های وردپرس دانلود شده‌اند. به همین دلیل قسمت اول وب‌سایت مختص معرفی افزونه‌های گروه وردپرس‌پارسی طراحی شده است که در آن لیستی کامل از افزونه‌ها به همراه توضیحات در اختیار کاربران است . روند تولید افزونه‌های رایگان در جهت توسعه و بومی‌سازی بیشتر وردپرس از طرف وردپرس پارسی ادامه دارد و بزودی افزونه‌های دیگری به آرشیو اضافه خواند شد.   گروه وردپرس‌پارسی که تا به این‌جا تمرکز بیشتر خود را روی پشتیبانی رایگان از وردپرس گذاشته بود تا مشکلات کاربران وردپرس فارسی را حل کند که حاصل این فعالیت 18 هزار کاربر در انجمن با 43 هزار موضوع و 255 هزار سوال جواب است، قرار است من بعد در عرصه آموزش وردپرس وارد شود و از تخصص اعزای گروه در این حوزه نیز استفاده کند تا مرجعی کامل، اصولی و درست برای آموزش وردپرس ایجاد شود. قسمت دوم وب‌سایت مربوط به مقالات و آموزش‌هایی است که روی وردپرس پارسی از طرف اعضای آن ارسال می‌شود.   در دنیای وردپرس اتفاقات مختلفی در حال روی دادن است که دانستن آن‌ها میتونه برای ما جالب و جذاب باشه، برگزاری وردکمپ‌ها، معرفی سرویس‌ها و خدمات جدید و ... که از جمله اخبار مهم در این حوزه می‌توان برگزاری اولین همایش وردپرس ایران در سال 93 و همایش‌های دیگر مربوط به وردپرس و معرفی سیاره وردپرس و همینطور خبر برگزاری میتاپ‌های وردپرسی در ایران اشاره کرد ، در قسمت آخر وب‌سایت به معرفی موارد این چنینی پرداخته می‌شود و همینطور گزارش‌های مرتب از فعالیت‌ها، میتاپ‌ها و رویدادهای وردپرسی در آن ارائه می‌شود .   در ادامه این فعالیت‌ها بزودی شاهد اخبار جدیدی از وردپرس‌پارسی خواهید بود. شما نیز به عنوان یکی از کاربران این جامعه وردپرسی می‌توانید ما را در توسعه هر چه بیشتر وردپرس یاری کنید. لینک مستقیم خبر : http://wp-parsi.com/wpparsi-new-version  
SM-Mahdavi

آموزش کار با متد PDO

6 پست در این موضوع قرار دارد

سلام دوستان

خب همگی می دونید که برای کار با بانک های اطلاعاتی در PHP سه تا متد معرفی شده. متد اول MySQL هست. خب این روش به دلیل مشکلاتی که تو امنیت و بحث SQL Injection داشت کم کم کنار رفت. یعنی خود مایکروسافت اونو کنار گذاشت. ولی خب به جاش MySQLI رو ارائه داد. میشه گفت نسخه تکمیل شده همون MySQL هست. با این دو تا روش شما فقط می تونید با بانک MySQL کار کنید.

PDO وقتی ارائه شد کم کم همه رو به سمت خودش جذب کرد. حالا چرا؟

دلیل اول اینه که شما با این روش می تونید به 12 تا بانک مختلف مثل SQL Lite و SQL Server کار کنید، در صورتی که با روش MySQLI شما فقط با یک بانک می تونید کار کنید که اونم خود MySQL هست.

مزیت بعدی امنیت و شی گرایی هست که در روش PDO بسیار تقویت شده.

خودم هم تازه با این متد شروع به کار کردم. اگه مایل باشید می تونیم آموزش رو ادامه بدیم. (البته در حدی که خودم بلدم :) )

دوستان خواهشنا داخل نظرسنجی شرکت کنید و تو این تاپیک پست ارسال نکنید تا بتونیم آموزش ها رو منظم قرار بدیم.

17

به اشتراک گذاری این پست


لینک به پست

بخش اول آموزش PDO - ایجاد کانشکن

سلام دوستان

امروز می خوایم بخش اول آموزش رو شروع کنیم.

همون طور که در بالا گفتم، PDO یک متد یا بهتر بگم یک روش برای اتصال و کار با بانک های اطلاعاتی با PHP هست. در مرحله اول باید کانکشن خودمون رو بنویسیم. مثل روش های قبلی ابتدا نام سرور، نام دیتابیس، کاربری و رمز رو میگیریم و داخل متغیر ذخیره می کنیم. به صورت زیر:


$servername="localhost";
$dbname="pdo";
$username="root";
$password="";

یه پارامتر دیگه هست به نام dsn که یه خورده فکر کنم جدیده!

این dsn امنیت کانکشن رو تامین می کنه و به صورت زیر باید نوشته بشه:


$dsn="mysql:host=$servername;dbname=$dbname";

نوع بانک، نام سرور و نام دیتابیس رو به این صورت میگیره.

حالا باید یه شی PDO بسازیم. PDO مخفف PHP Data Object هست. تو این روش مفهمو شی گرایی پیاده سازی شده. بعد از ساختن شی، باید با پارامتر هایی که قبلا پر کردیم کانشکن رو ایجاد کنیم. به صورت زیر:


$connect=new PDO($dsn,$username,$password);

بعد متغیر شی رو return می کنیم.


return $connect;

PDO برای خطایابی هم فکرهای خوبی کرده. شما می تونید تو تمام مراحل کار با PDO بحث خطایابی رو داشته باشید. حالا در این قسمت ما می خوایم کانشکن رو خطایابی کنیم. بیبنیم که درست وصل شدیم یا نه.

اول باید کدهامون رو داخل بلاک try catch بزاریم.


<?php
try{
$servername="localhost";
$dbname="pdo";
$username="root";
$password="";
$dsn="mysql:host=$servername;dbname=$dbname";
$connect=new PDO($dsn,$username,$password);
return $connect;
}
catch(PDOException $error)
{
echo "Error In Connect!";
exit();
}
?>

try تلاش می کنه تا به کانشکن وصل بشه. اگه شد پیغام مناسب و اگه نشد پیغام خطا نمایش میده. این کد نهایی برای کانکشن ما هست. می تونید داخل یه فایل بنویسید و هر لازم استفاده کنید با دستور زیر فایل رو فراخوانی کنید:


<?php include "connection.php"; ?>

خب برای قسمت اول فکر می کنم کافی باشه. در قسمت بعد بحث خواندن اطلاعات از دیتابیس رو مطرح می کنیم.

12

به اشتراک گذاری این پست


لینک به پست

بخش دوم آموزش PDO - خواندن اطلاعات از دیتابیس

سلام دوستان

تو آموزش قبلی یاد گرفتیم چجوری از طریق متد PDO به دیتابیس وصل بشیم. حالا می خوایم نحوه خواندن اطلاعات از دیتابیس رو یاد بگیریم.

قبل از هر چیز اتصال به دیتابیس رو برقرار می کنیم.

روش کار تقریبا مثل متدهای قبلی هست اما یه سری تغییرات داره. در مرحله اول باید کوئری مورد نظرمون رو بنویسیم. من اینجا خروجی کوئری رو داخل متغیر sql ذخیره می کنم.


$sql="SELECT * FROM tbl_user";

با این دستور من گفتم که کلیه سطرهای جدول tbl_user رو برای من انتخاب کن و داخل sql بریز.

بعد باید کوئری اجرا بشه. با دستور زیر:


$result=$connect->query($sql);

اینجا هم اومدم خروجی کوئری اجرا شده رو داخل result ریختم تا بتونم ازش استفاده کنیم.

نکته: connect همون متغیری هست که اتصال ما به دیتابیس رو برقرار کرده.

حالا نوبت اینه اطلاعات تک تک ستون های جدول رو بخونیم و نمایش بدیم. 2 راه برای این کار هست. یکی استفاده از حلقه while دیگری استفاده از for each. من از روش دوم استفاده می کنم. چون ساده تر هست.


foreach ($result as $rows)
{
echo $rows['id'] . "<br>";
echo $rows['name']."<br>";
}

حلقه for each ورودی آرایه داره. من با متغیر rows که با as استفاده کردم دارم رو آیتم های آرایه ای که داخل Result داشتم کار می کنم.

پس کد کامل شده به صورت زیر در میاد:


<?php
$sql="SELECT * FROM tbl_user";
$result=$connect->query($sql);
foreach ($result as $rows)
{
echo $rows['id'] . "<br>";
echo $rows['name']."<br>";
}
?>

به همین سادگی ما تونستیم یه سری اطلاعات موجود در جدولی از دیتابیس رو بخونیم و نمایش بدیم.

امیدوارم کاربردی باشه براتون. تو قسمت بعد نحوه درج اطلاعات در جدول رو یاد می گیریم.

10

به اشتراک گذاری این پست


لینک به پست

بخش سوم آموزش PDO - ساخت فرم لاگین

سلام دوستان

امیدوارم حالتون خوب باشه. تو این قسمت می خوایم یه فرم لاگین امن با متد PDO ایجاد کنیم.

کانشکن رو داخل فایل connection.php داریم.(آموزش های قبلی). پس برای شروع اول فایل connection رو include می کنیم به صفحه. به صورت زیر:


<?php include"connection.php"; ?>

حالا باید فرم رو بسازیم. 2 تا کادر متن لازم داریم. یکی برای دریافت نام کاربری یه هم رمز. و یک دکمه برای ارسال اطلاعات. به صورت زیر فرم رو طراحی می کنیم:


<form name="login" method="post">
<label>نام کاربری:</label><input type="text" name="user">
<br>
<label>رمز ورود:</label><input type="text" name="pass">
<input type="submit" name="login">
</form>

من قبلا تو جدولی به نام login دو تا سطر تعریف کردم. یکی برای نام کاربری یکی هم رمز. یه رکورد پیشفرض هم بهش دادم. حالا باید مقادیری رو که کاربر وارد می کنه با اون مقادیر مقایسه کنم. اگه برابر بود اجازه ورود بدم.

می خوایم سطح کنترل برنامه رو یه کم ببریم بالا. اول باید چک کنیم ببینیم اصلا دکمه زده شده یا نه. (شرط اول داخل دستور زیر).

بعد باید چک کنیم که کادرهای متن خالی نباشند.(شرط دوم داخل دستور زیر). اگه خالی بود و دکمه زده شد باید یه پیغام نشون بدیم که چیزی وارد نشده!

در غیر این صورت (یعنی اون دو تا شرط برقرار باشه = دکمه زده شده و مقدار وارد شده) باید کوئری مورد نظر رو بنویسیم و دستورات رو اجرا کنیم.


<?php
if(isset($_POST['login']))
{
if(empty($_POST['user']) || empty($_POST['pass']))
{
echo "User or Pass is Empty!!";
}
else
{
$sql="SELECT COUNT(*) FROM login WHERE name=? and pass=?";
$result=$connect->prepare($sql);
$result->bindValue(1,$_POST['user']);
$result->bindValue(2,$_POST['pass']);
$result->execute();
$num=$result->fetchColumn();
if($num==1)
{
echo "yes";
}
else
{
echo "no";
}
}
}
?>

اگه با ساختار کوئری های sql آشنا باشید می دونید دستور Select خروجی جدول داره. ما اومدیم تعداد سطرهایی که مقدار name و pass مساوی مقادیری که کاربر وارد کرده رو میگیریم. اگه 1 باشه یعنی یه سطر مساوی پیدا کردیم، در نتیجه اجازه ورود میدیم.

حالا چرا جلوی name و pass ما ? گذاشتیم؟ این یک تکنیک جدید داخل PDO هست. ما با دستور BindValue اومدیم به هر ؟ به ترتیب مقدار دادیم. یه مرحله از امنیت عملا اینجا برای ما تامین شد. اما prepare داره چیکار میکنه؟ این دستور یه مرحله قبل از اجرای نهایی کوئری هست. قبل از اینکه ما به ؟ ها مقدار بدیم اومدیم کوئری رو preapare کردیم و داخل متغیر Result ریختیم. یه مرحله دیگه از امنیت هم ایجا مشخص شد برامون. در آخر هم با Execute اجرا کردیم.

تا اینجا ما اومدیم به بانک وصل شدیم، جستجو کردیم که آیا مقادیری که کاربر وارد کرده داخل جدول وجود داره یا نه. گفتیم اگه وجود داشته باشه خروجی تابع 1 و اگه نباشه 0 هست.

در مرحله بعد با FetchColumn تعداد ستون ها رو می خونیم. بعد یه شرط گذاشتیم و تمام.. من اومدم یه پیغام نمایش دادم. شما می تونید به جای پیغام انتقال بدین به صفحه مدیریت.

کد کامل شده به صورت زیر دی میاد:


<fieldset>
<legend>ورود به سایت</legend>
<?php
if(isset($_POST['login']))
{
if(empty($_POST['user']) || empty($_POST['pass']))
{
echo "User or Pass is Empty!!";
}
else
{
$sql="SELECT COUNT(*) FROM login WHERE name=? and pass=?";
$result=$connect->prepare($sql);
$result->bindValue(1,$_POST['user']);
$result->bindValue(2,$_POST['pass']);
$result->execute();
$num=$result->fetchColumn();
if($num==1)
{
echo "yes";
}
else
{
echo "no";
}
}
}
?>
<form name="login" method="post">
<label>نام کاربری:</label><input type="text" name="user">
<br>
<label>رمز ورود:</label><input type="text" name="pass">
<input type="submit" name="login">
</form>
</fieldset>

سوالات و نظرات خودتون رو در این تاپیک بنوسید.

با سپاس

9

به اشتراک گذاری این پست


لینک به پست

بخش چهارم آموزش PDO - هش کردن رمز ورود

سلام دوستان

امیدوارم حالتون خوب باشه. تو این آموزش قصد داریم رمز ورود فرم لاگین رو هش کنیم. Hash کدها به طور خلاصه کدهایی هستند بر اساس الگوریتمهایی که با محاسبات بر روی فایل ها تولید می شوند.

در مرحله اول باید با استفاده از md5 رمز مورد نظر رو هش کنیم. تابع مربوط رو به صورت زیر می نویسیم:


<?php
function hash_value($value)
{
return md5($value) . "ka23$%gdfg%&&Ha";
}
?>

تابع ساده ای هست. پارامتری رو که بهش ارسال می کنیم رو با دستور md5 هش می کنه و با رشته ای که ما دادیم ترکیب می کنه. نکته ای که هست اینکه که md5 یک طرفه عمل می کنه. یعنی کدی که هش میشه قابل برگشت نیست.

می تونیم قبل از ارسال رمز به بانک کد رو هش کنیم و سپس درج کنیم. به صورت زیر:


$pass = hash_value("admin");

روش جالبیه. به نظر من برای امنیت لازمه. حتما استفاده کنید.

تاپیک سوالات و نظرات آموزش PDO

8

به اشتراک گذاری این پست


لینک به پست

بخش پنجم آموزش PDO - درج اطلاعات در جدول

سلام دوستان.

امیدوارم حالتون خوب باشه. تو این قسمت درج اطلاعات در جدول رو یاد میگیریم. به عنوان مثال یه جدول ثبت نام داریم با نام register که دارای فیلد های زیره:


id - name - family - phone

خب در مرحله اول اتصال فایل کانکشن با دستور زیر رو فراموش نکنید. داخل صفحه ای که دارید کد می نویسید باید فایل connection.php متصل شده باشه.


<?php include"connection.php"; ?>

در مرحله بعد باید کوئری درج رو بنویسیم. به صورت زیر:


$statement = $connect->prepare("INSERT INTO Register(id,name, family, phone)
VALUES(?, ?, ?, ?)");
$statement->execute(array("10","morteza", "mahdavi", "09130000000"));

موفق باشید.

تاپیک سوالات و نظرات آموزش PDO

4

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط nazanin123
      ضمن عرض سلام و وقت بخیر
      یک توضیحی درباره pdo و mysqli بدین
      من یک سایت تازه تاسیس دارم ، php رو گذاشتم روی 7.1
      البته 7.0 هم موجوده ، در ماژول ها mysqli تیک نخورده بصورت پیش فرض!
      آیا پلاگین های بروز مخزن هم از pdo برای ارتباط با دیتابیس استفاده میکنن؟
      بهتره تیک mysqli رو بزنم یا نه؟ تصویر ضمیمه شد

    • توسط سعید فرزادی پور
      با عرض سلام
      من به مشکلی خوردم که راه حل اون رو نمیدونم
      در هدر سایت یک نویگیشن بار دارم که منوی اصلی سایتم به صورت دراپ داون در این نویگیشن بار وجود داره ، قال سایت من shaply هستش و استفاده از ویجت ها در body بازه ، من با استفاده از یک ویجت اسلایدر در بالاترین قسمت و زیر هدر سایت که ارتفاع اونم 55 پیکسل هستش اسلایدر بزرگ ایجاد کردم ، و حالا زمانی که میرم روی دراپ داون ها متاسفانه تا قبل از اسکرول کردن به پایین ، زیر منو ها به زیر اسلایدر میرن ، اما بعد از اسکرول کردن به پایین این مشکل حل شده و منو ها و زیر منو ها نمایش داده میشن ، هرچه z-index رو افزایش دادم نتیجه ای نداشت ، چطور میتونم این مشکل رو حل کنم ؟
      و سوال دوم این که در این تم منو ها اول به پایین و بعد به راست باز میشن و من میخوایم سایت رو به صورت فارسی داشته باشم و میخوام اول به پایین و بعد به چپ باز بشن منو ها , چه تغییری میتونم در css ایجاد کنم ؟
    • توسط poruamohammady
      سلام دوستان من یه مدت هست افزونه هایی که نصب می کنم ورد پرس بهم این اخطار هار رو میده کسی میتونه کمک کنه برای مثال تازگی ها افزونهwp-super cacheرو که نصب کردم این اومد قبلا هم چیزای دیگه بود مرسی اگر راهنمایی کنید

    • توسط mehran-b
      با سلام و عرض ادب خدمت تمامی کاربران انجمن وردپرس پارسی
       
      امروز یک کدی براتون قرار میدم که با استفاده از این کد میتونید به تمامی پست های یه دسته خاص از وب سایتتون متای robots با مقدار noindex,follow اضافه کنید.
       
      در صورت نصب بودن افزونه سئو وردپرس
      add_filter('wpseo_robots', 'mehran_specific_category_posts_add_noindex_yoast'); function mehran_specific_category_posts_add_noindex_yoast($content) { if(is_single() && in_category(777)) { return "noindex,follow"; } return $content; } در صورت نصب نبودن افزونه سئو وردپرس
      add_action('wp_head', 'mehran_specific_category_posts_add_noindex'); function mehran_specific_category_posts_add_noindex() { if(is_single() && in_category(777)) { $output = '<meta name="robots" content="noindex,follow" />' . "\n"; } echo $output; }  
      توجه1: کدهای بالا رو باید در فایل functions.php قالب سایتتون و زیر اولین
      <?php قرار بدید.
      توجه2: به جای عدد 777 در کد باید آیدی دسته ای رو قرار بدید که قراره پست هاش noindex,follow بشن.
       
      موفق باشید
    • توسط mbonjakhi
      باسلام
      سوالی از خدمتتون داشتم.
      میشه من یه دامنه .ir خریداری کنم و کد های یک سایت خاص رو کلا کپی کنم و تو دامنه خودم بکار ببرم؟
      یعنی اینکه دیگه نیازی به طراحی سایت نداشته باشه و به راحتی سایتم ساخته بشه؟
      اگه امکانش هست واسم یه مقدار توضیح بدید باید چیکار  کنم.
      ممنون