PDA

View Full Version : سوال: مشکل در دستور شرطی ( if )



MeSaeid
سه شنبه 05 فروردین 1393, 16:20 عصر
دوستان من چنین کدی نوشتم


if ($_GET['action'] == 'add') {
//My Code
}

اگه تو مرورگر اینو بزنم action=add؟mydomain.com/page.php این بخش از کد اجرا میشه اما در ارسال دستور به دیتابیس به مشکل می خوره و عملیات insert انجام نمیشه که اگه این دستور شرطی رو بردارم درست میشه
ممنون میشم راهنمایی بفرمایید

Veteran
سه شنبه 05 فروردین 1393, 16:23 عصر
کد کامل رو قرار بدید

bestirani2
سه شنبه 05 فروردین 1393, 16:28 عصر
اولاً که کدتون مشکل امنیتی داره. نباید $_GET رو مستقیم استفاده کنید. باید پاکسازی کنید و بعد استفاده کنید.
کدتونم کامل بگذارید.

MeSaeid
سه شنبه 05 فروردین 1393, 16:29 عصر
بفرمایید


<?php
session_start();
require_once '../inc/config.php';
require_once '../inc/function.php';

date_default_timezone_set("Asia/Tehran");
if ($_GET['action'] == 'add') {
if(isset($_POST['submit'])) {
if (empty($_POST['body'] OR $_POST['subject'])) {
die ('تمام فیلد ها را بطور کامل وارد کنید');
} else {
$content = array('subject' => mysql_prep($_POST['subject']),'body' => mysql_prep($_POST['body']),'time' => date('Y-m-d-H-i'));
$sql = "INSERT INTO newsletter(newsletter_subject, newsletter_body, newsletter_time)
VALUES ('{$content['subject']}','{$content['body']}','{$content['time']}' )";
if (!mysql_query($sql)) {
die ('Error :'.mysql_error());
} else {
echo 'اخبار با موفقیت ثبت گردید';
}
}
}
} elseif ($_GET['action'] == 'list') {
$result = mysql_query("SELECT * FROM newsletter");
echo '<table style="width: 300px">
<tr>
<td>Subject</td>
<td>Time</td>
</tr>';
while ($row = mysql_fetch_array($result)) {
echo '<table style="width: 300px">';
echo '<tr>';
echo '<td>'. $row['newsletter_subject'] .'</td>';
echo '<td>'. $row['newsletter_time'] .'</td>';
echo '</tr>';
}
echo '</table>';
} else {
header('Location:?action=list');
}

?>

bestirani2
سه شنبه 05 فروردین 1393, 16:32 عصر
خطای اس کیو ال رو هم بگذارید اینجا

MeSaeid
سه شنبه 05 فروردین 1393, 16:36 عصر
خطا نمیده فقط چیزی INSERT نمیشه !

bestirani2
سه شنبه 05 فروردین 1393, 16:46 عصر
نمایش پیغام خطا رو نبستید؟
یه چیزی رو قبل از $content با echo نمایش بدید ببینید اصلاً به اونجا میرسه؟
دوم اینکه mysql_query یه آرگومان کانکشن هم میگیره که وارد نکردید؟
سوم توابع mysql بد دانسته شده. از توابع جدیدتر استفاده کنید.

Veteran
سه شنبه 05 فروردین 1393, 16:46 عصر
خب شما دارید action رو به صورت GET میفرستید و شرط دوم منتظر اطلاعاتی هست که از طریق یک فرمی به صورت POST ارسال میشه
جهت حل این مشکل متغیر action رو به هم به فرم اضاف کنید

<form action="page.php?action=add">

</form>

MeSaeid
سه شنبه 05 فروردین 1393, 16:58 عصر
خب شما دارید action رو به صورت GET میفرستید و شرط دوم منتظر اطلاعاتی هست که از طریق یک فرمی به صورت POST ارسال میشه
جهت حل این مشکل متغیر action رو به هم به فرم اضاف کنید

<form action="page.php?action=add">

</form>
خیلی ممنون حل شد .

یه سوال دیگه من می خوام که اگه action=list بود فقط همون احرا شه و نره به if بعدی و اونو اجرا کنه
من الان اگه http://site.com/news.php?action=list بزنم کد قسمت action=add هم اجرا میشه مشکل از کجاست ؟
http://up.vbiran.ir/uploads/19532139575260312787_Capture.PNG

Veteran
سه شنبه 05 فروردین 1393, 17:05 عصر
اگر teamViewer دارید،اطلاعات رو واسم ارسال کنید تا ببینیم مشکل کجاس

MeSaeid
سه شنبه 05 فروردین 1393, 17:48 عصر
اگر teamViewer دارید،اطلاعات رو واسم ارسال کنید تا ببینیم مشکل کجاس

حل شد .
ممنون از سبحان جان :لبخند: