PDA

View Full Version : سوال: مدیریت پست ها در CMS



amirrezaq
جمعه 25 مرداد 1392, 13:42 عصر
با سلام خدمت دوستان
من دارم یه CMS طراحی میکنم.رسیدم به آخراش که الان به یه مشکلی برخوردم.خیلی روش فک کردم حتی راه های زیادی رو براش امتحان کرده ولی نشد که نشد.
حالا اومدم اینجا از شما سوالمو بپرسم.و اما سوال:
من یک صفحه دارم که در اون عناوین مطالب + یک آیکون برای ویرایش وجود داره.یعنی روبروی هر عنوان پست یک آیکون وجود داره برای ویرایش اون پست که با کلیک بر روی اون به صفحه ویرایش پست میره.حالا من میخوام بدونم از کجا بفهمم که کاربر بر روی آیکون ویرایش کدوم پست کلیک کرده.این کدهای صفحه اول هست که شامل عناوین مطالب هست:

<?php
$sql="SELECT * FROM `post`";
$result=mysqli_query($link,$sql) or die("خطا در انجام درخواست");
while ($row=mysqli_fetch_array($result))
{
echo "<div class='div'>";
echo "<img src='images/it-icon.png'>";
echo $row['titlepost'];
echo "<a href='p-manage-edit.php'><img src='images/file_edit.png'></a>";
echo "</div>"."<p/>";
}
?>
ممنون میشم پاسخ بدید.

parsboy
جمعه 25 مرداد 1392, 13:50 عصر
با سلام خدمت دوستان
من دارم یه CMS طراحی میکنم.رسیدم به آخراش که الان به یه مشکلی برخوردم.خیلی روش فک کردم حتی راه های زیادی رو براش امتحان کرده ولی نشد که نشد.
حالا اومدم اینجا از شما سوالمو بپرسم.و اما سوال:
من یک صفحه دارم که در اون عناوین مطالب + یک آیکون برای ویرایش وجود داره.یعنی روبروی هر عنوان پست یک آیکون وجود داره برای ویرایش اون پست که با کلیک بر روی اون به صفحه ویرایش پست میره.حالا من میخوام بدونم از کجا بفهمم که کاربر بر روی آیکون ویرایش کدوم پست کلیک کرده.این کدهای صفحه اول هست که شامل عناوین مطالب هست:

<?php
$sql="SELECT * FROM `post`";
$result=mysqli_query($link,$sql) or die("خطا در انجام درخواست");
while ($row=mysqli_fetch_array($result))
{
echo "<div class='div'>";
echo "<img src='images/it-icon.png'>";
echo $row['titlepost'];
echo "<a href='p-manage-edit.php'><img src='images/file_edit.png'></a>";
echo "</div>"."<p/>";
}
?>
ممنون میشم پاسخ بدید.
باسلام
دوست عزیز هریک ازعنواین شما در دیتابیس دارای یک شناسه هستند شما باید
شناسه رو به صفحه ای که میخواهید ویرایش کنید پاس بدید و در اون صفحه شناسه مورد نظر رو بگیرید
و ویرایش رو انجام بدید .موفق باشید

amirrezaq
جمعه 25 مرداد 1392, 13:52 عصر
باسلام
دوست عزیز هریک ازعنواین شما در دیتابیس دارای یک شناسه هستند شما باید
شناسه رو به صفحه ای که میخواهید ویرایش کنید پاس بدید و در اون صفحه شناسه مورد نظر رو بگیرید
و ویرایش رو انجام بدید .موفق باشید
ممنون از پاسختون
ولی من تو دیتابیس از شناسه برای هیچ چیزی استفاده نکردم!
و فرضا اگه بزارم باز هم چطوری شناسرو پاس بدم؟؟؟؟

parsboy
جمعه 25 مرداد 1392, 13:58 عصر
ممنون از پاسختون
ولی من تو دیتابیس از شناسه برای هیچ چیزی استفاده نکردم!
و فرضا اگه بزارم باز هم چطوری شناسرو پاس بدم؟؟؟؟
شما در دیتابیس باید برای هریک ازعنواین موردنظرتون یک شناسه در نظربگیرید
وبرای پاس دادن به این روش:

echo ' <a href="Edit.php?id='.$row['id'].'" >'.$row['title'].' </a>' .'' ;

و ID رو در صفحه ی Edit دریافت کنید و ویرایش رو انجام بدبد

amirrezaq
جمعه 25 مرداد 1392, 14:32 عصر
شما در دیتابیس باید برای هریک ازعنواین موردنظرتون یک شناسه در نظربگیرید
وبرای پاس دادن به این روش:

echo ' <a href="Edit.php?id='.$row['id'].'" >'.$row['title'].' </a>' .'' ;

و ID رو در صفحه ی Edit دریافت کنید و ویرایش رو انجام بدبد
ببخشید من اینقدر خنگ بازی در میارم!
نا سلامتی هنوز مبتدیم خوب!
خوب من چطوری id رو در صفحه ادیت دریافت کنم؟؟؟
به وسیله متغیر $_GET???
ممون!

parsboy
جمعه 25 مرداد 1392, 14:49 عصر
ببخشید من اینقدر خنگ بازی در میارم!
نا سلامتی هنوز مبتدیم خوب!
خوب من چطوری id رو در صفحه ادیت دریافت کنم؟؟؟
به وسیله متغیر $_GET???
ممون!
بله به این صورت باید دریافت کنی:

if(isset($_GET['id']))
{
$id =$_GET['id'];
//some code
}
وquery شما به این شکل میشه:

$query1 = mysql_query("SELECT id,title FROM Table_name WHERE ID='$id'");

*توجه داشته باش که ID رومستقیم قرارنده قبلش اون رو بررسی کن .

فرزند کوروش
جمعه 25 مرداد 1392, 15:26 عصر
*توجه داشته باش که ID رومستقیم قرارنده قبلش اون رو بررسی کن .
ممکنه برات سوال بشه این ینی چی؟

شما باید مقادیری که قراره داخل کوئری وارد کنی رو بررسی کنی که حتما ورودی از نوعی که میخوای باشه تا شخص دیگری مثل هکر نتونه از طریق دستوراتی به دیتابیس شما وصل بشه
در این مورد باید چک کنی که گت ای دی حتما از نوع عددی باشه


$id =intval($_GET['id']);

yegane8
جمعه 25 مرداد 1392, 18:58 عصر
اگه بخواییم برای جلوگیری از injection فقط title معلوم باشه چطوری باید عمل کرد ؟

فرزند کوروش
جمعه 25 مرداد 1392, 23:52 عصر
اینجکشن ربطی به مشخص بودن یا نبودن تایتل نداره..
شما باید مراقب اطلاعات دریافتی از طریق گت ( و هم پست !) باشید تا بتونید جلوی ورود کارکتر های غیر مجاز رو بگیرید

yegane8
شنبه 26 مرداد 1392, 12:23 عصر
درست متوجه نشدی منظورم رو
برای اینکه id در url نباشه (پاس کنیم id رو ولی تو url فقط مثلا title اوون id نوشته شه)
باید چی کار کرد؟