رفتن به مطلب

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


پست های پیشنهاد شده

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

سپاس

لینک به ارسال

داداش pdo چیه؟

با اجازه SM-Mahdavi

تو همون تاپیکی که لینکش رو گذاشتن بخونید هست :

سلام دوستان

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

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

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

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

لینک به ارسال
  • 4 هفته بعد...

سلام علی جان

به انجمن وردپرس پارسی خوش اومدین.

توابع زیادی برای این کار وجود داره http://www.php.net/manual/en/ref.hash.php

اما در حال حاظر بهترین عملکرد رو md5 داره. که فکر می کنم این متد رو هم به تازگی هکرها تونستن مورد نفوذ قرار بدن.

لینک به ارسال
  • 7 ماه بعد...

درود

دوست عزیز خیلی وقت بود دنبال یادگیری متد PDO بودم و متاسفانه سورس فارسی پیدا نمی کردم، ممنونم از آموزشتون خیلی بهم کمک کرد، لطفاٌ آموزش رو ادامه بدید

لینک به ارسال

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

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

ببخشید، جسارت نباشه، فکر نمیکنم که PDO و روش کانکت قدیمی mysql ابتکاری از ماکروسافت باشه؟ مگر اینکه منظورتون خود SQL Server ماکروسافت باشه که حاوی باگ SQLi هست. تا جایی که من میدونم MySQL کاری به ماکروسافت نداره و مال اوراکل هست.

موفق باشید.

لینک به ارسال

سلام.

بله درسته. اشتباه از من بوده. از همه کاربران و شما دوست عزیز عذر می خوام.

لینک به ارسال
اما در حال حاظر بهترین عملکرد رو md5 داره. که فکر می کنم این متد رو هم به تازگی هکرها تونستن مورد نفوذ قرار بدن.

md5 تنها که الان دیگه جوابگو نیست .

پیشنهاد میکنم از sha256 رو 4 هزار دور با یک سالت ، پسوردهاتون رو هش کنید .

لینک به ارسال

md5 اصلن جالب نیست ، الگوریتم های زیاید برای هش هست ؛

البته بماند هیچ کدوم از الگوریتم ها مناسب نیستند . توصیه بنده اینه که برای هر اسکریپت به الگوریتم هش اختصاصی با چاشنی slat نوشته بشه که اکه وارد باشید 1 دقیقه کار داره

لینک به ارسال
  • 1 ماه بعد...

سلام به دوستان !! یکی میشه اینفایل چک کنه ببینه مشکلش چیه ؟ همه چی درست هست فک کنم ولی داخل دیتا بیش درج نمیکنه ! ممنون میشم چک کنید مشکلشو بگید با pdo هست !

register.zip

لینک به ارسال

شما type هر پارامتر رو باید مشخص کنید



<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

لینک به ارسال
  • 5 ماه بعد...

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

من میخوام با pdo عکس ذخیره کنم تو دیتابیس و بعد بخونمش.

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

لینک به ارسال

بهتره شما آدرس عکس رو داخل دیتابیس ذخیره کنید تا راحت تر بتونید استفاده کنید. اگه برای انجام این مورد مشکلی دارید تاپیک بزنید راهنمایی کنم.

لینک به ارسال

if(isset($_POST["save"])){
if($_POST["title"]!="" && $_POST["text"]!="" && $_POST["category"]!="" && $_POST["slider"]!="" && $_POST["important"]!="" && $_FILES["file"]["name"]!="")
{
$title= prevent($_POST["title"]);
$text= prevent($_POST["text"]);
$cat_id= checknum($_POST["category"]);
$slider= checknum($_POST["slider"]);
$important= checknum($_POST["important"]);
$filename= $_FILES["file"]["name"];
$filetype= $_FILES["file"]["type"];
$temp = $_FILES["file"]["tmp_name"];
$save_url = "../img/post/";
$file = md5($filename.microtime()).substr($filename,-5,5);
$db_url = "imq/post/".$file;
$whitelist = array("image/jpeg" , "image/jpg" , "image/gif" , "image/png");
if(in_array($filetype , $whitelist)){
if(is_uploaded_file($temp)){
$move = move_uploaded_file($temp,$save_url.$file);
if($move){
$sql="INSERT `$tbl_post` SET `category_id`=? , `title`=? , `text`=? ,`pic_url`=? , `slider`=? , `important`=? ";
$result= $connect-> prepare($sql);
$result->bindValue(1,$cat_id);
$result->bindValue(2,$title);
$result->bindValue(3,$text);
$result->bindValue(4,$db_url);
$result->bindValue(5,$slider);
$result->bindValue(6,$important);
if($result->execute()){
echo "<script>alert('خبر جدید در پایگاه داده ذخیره شد.');</script>";
}
}
}
}

ویرایش شده توسط ahmadi_f
لینک به ارسال

دیتابیس رو چک کنید که URL فایل درست ذخیره بشه، اگه درست ذخیره شده بود، مطمئنید بشید که متغیرها رو درون کد درست تعریف کردید و همچنین اصلاً هاست اجازه آپلود به شما میده یا خیر.

موفق باشید.

لینک به ارسال

یعنی کد های که برای برای اپلود نوشتم درسته؟

همه چیزو چک کردم.عکس داخل دیتا بیس ذخیره میشه.

اینم کدهایی ک موقع خوندن عکس استفاده می کنم.


<?php
$result_p = $connect->query("SELECT * FROM `$tbl_post` ORDER BY `id` DESC LIMIT 0,7");
while($rows_p = $result_p->fetch(PDO::FETCH_ASSOC))
{
?>
<img src="imq/<?=$rows_p["pic_url"];?>" width="60" />

لینک به ارسال

شما خودتون کدهای رجیستر خبر رو با خوندنش مطابقت بدید و متوجه اشتباهتون میشید.

من چون نمیتونم کدهای شما رو فعلاً بخونم، شما خودتون چک کنید که URLها به درستی ذخیره میشن و آیا شما به‌درستی فراخوانی میکنید.

موفق باشید.

لینک به ارسال
  • 1 سال بعد...
در در ۱۳۹۵/۵/۳۱ ه‍.ش. at 14:55، khodamoradi گفته است :

با سلام

من یه مشکلی دارم و اون اینکه هر کاری می کنم با pdp به sql server نمی تونم وصل بشم

خطای   could not find driver  رو میده

کسی می تونه به من کمک کنه

ممنون

باید درایور sql server برای pdo رو نصب کنید

کدهای زیر رو تست کنید


 

try {

    $DBH = new PDO("sqlsrv:Server=xxxx;Database=xxxx", 'xxxx', 'xxxx');

} catch (PDOException $e) {

    echo $e->getMessage();
}

یا

try {

    $DBH = new PDO("dblib:host=xxxx;dbname=xxxx", 'xxxx', 'xxxx');

} catch (PDOException $e) {

    echo $e->getMessage();
}

 

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...