آموزش ساخت یک سی ام اس (سیستم خبری) ساده

سلام . خسته نباشید .
از اساتید می خوام که در حین اینکه این همه امکانات به CMS اضافه می کنند امنیتش رو هم قوی کنند و آموزشش رو هم بذارند . یک دنیا ممنون . منتظرم :rose:
 

reza11_2005

Member
مشکل

اینم اینستال دیگه نیاز به ایمپورت نداره
مانم گفتیم بیکار نشینیم یه اینستالر ساختیم حالا یکی بیاد فرمش رو بسازه :d
فقط شما اطلاعات سرور و دیتابیس رو در فایل کنفیگ وارد کنید و بر فایل اینستال رو اجرا کنید
با سلام
آقا من نمی توانم این سیستم را نصب کنم وقتی می خواهم نصب اش کنم
این مشکل را می گیرد
Fatal error: Call to undefined function date_default_timezone_set() in e:\wamp\www\news\index.php on line 3
البته می خواهم بر روی سیستم کامپیوتر امتحانش کنم
اما باز هم مشکل دارد خواهش می کنم
بگوید مشکل کجاست
 

reza11_2005

Member
تیکه کد مربوط به بازدیدهای امروز و دیروز:
دیتابیس:
PHP:
CREATE TABLE `c` (
`id` INT( 20 ) NOT NULL AUTO_INCREMENT ,
`counter` INT( 30 ) NOT NULL ,
`date` DATE NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;

کد اصلی برای نمایش:

PHP:
<?
 
$ms="<div align=center>Design By : 
<a href=\"http://www.HotHost.ir\">HotHost</a></div>";
 
$db_user="root";            // یوزر نیم دیتابیس
$db_pass="123456";            // پسورد دیتا بیس
$db_name="db name";            // نام دیتا بیس
 
$connect=mysql_connect('localhost',$db_user,$db_pass);
mysql_select_db($db_name,$connect);
$date=date("y-m-d");
 
if(mysql_num_rows(mysql_query("SELECT * FROM c WHERE date='$date'"))>0){
$q=mysql_query("UPDATE c SET counter=counter+1 WHERE date='$date'");
}else{
 
$q=mysql_query("INSERT INTO c (`id`,`counter`,`date`) VALUES('','1','$date') ");
}
 
$pdate=date("y-m-d",time()-86400);
 
$q=mysql_query("SELECT * FROM c WHERE date='$date'");
$row=mysql_fetch_array($q);
 
echo '<div align=right>';
 
$co=$row['counter'];
echo "بازدید امروز : $co <br>";
 
$q2=mysql_query("SELECT * FROM c WHERE date='$pdate'");
$row2=mysql_fetch_array($q2);
$co2=$row2['counter'];
echo "بازدید دیروز : $co2";
echo '</div>';    echo $ms;
?>
با سلام میشه بگوید کد
php
را با چه اسمی ذخیره کنم و کد دیتابیس را در چه ذخیره کنم
با تشکر
 

reza11_2005

Member
اینم برای بخش تماس با ما. همراه با کسب اعتبار سنج!!! :d:
نکته: در خط دوم بجای youremail باید ایمیل مدیر نوشته شود...
البته میشه کاری کرد که به جای ارسال به ایمیل مدیر سایت، پیغام درون بخش مدیریت در قسمتی خاص نمایش داده بشه...
اما این کد به ایمیل مدیر ارسال میکنه.
کد ارتباط با ما:
PHP:
<?php 
$admin_email = "youremail"; 
 
if(isset($_post['submit_msg'])) 
{ 
   if (empty($http_post_vars['name_msg'])){ 
      die('<font face="tahoma" color="#003399" style="font-size: 9pt">لطفا نام خود را وارد نمایید.</font>'); 
   }; 
   if (empty($http_post_vars['email_msg'])){ 
      die('<font face="tahoma" color="#003399" style="font-size: 9pt">لطفا ایمیل خود را وارد نمایید.</font>'); 
   }; 
   if (empty($http_post_vars['msg_body'])){ 
      die('<font face="tahoma" color="#003399" style="font-size: 9pt">لطفا پیام خود را وارد نمایید.</font>'); 
   }; 
 
   $name_msg = htmlspecialchars($http_post_vars['name_msg']); 
   $name_msg = str_replace("&amp;","&",$name_msg); 
   $name_msg = str_replace("ی","ي",$name_msg); 
 
   $msg_body = htmlspecialchars($http_post_vars['msg_body']); 
   $msg_body = str_replace("&amp;","&",$msg_body); 
   $msg_body = str_replace("ی","ي",$msg_body); 
   $msg_body = nl2br($msg_body); 
 
// check empty for url... 
      If (!empty($http_post_vars['url_msg'])) 
      { 
         $url_msg  = str_replace('http://','',$_post['url_msg']); 
         $name_msg = "<a target=_blank href=http://".htmlspecialchars($url_msg).">".$name_msg."</a>"; 
      } 
 
         if(!strpos($_post['email_msg'],"@")) 
         { 
            print("<font color=#ff0000 face=tahoma >ایمیل ورودی نا معتبر است!"); 
            die("<br><br>example : Youremail@sitename.com </font>"); 
         }; 
 
      $from  = htmlspecialchars($http_post_vars['email_msg']); 
// start of email body... 
      $body = '<html><head><title>.:| contact |:.</title><base target="_blank"></head> 
<body text="#000000"> 
<p align="right" dir="rtl"><font face="tahoma" size="2">سلام 
به دوست عزیزم 
یک نفر برای شما پیامی ارسال نموده است.</font></p> 
<p align="right" dir="rtl"><font face="tahoma" size="2">نام : 
'.$name_msg.'</font></p> 
<p align="right" dir="rtl"><font face="tahoma" size="2">پیام : 
</font></p> 
<p align="right" dir="rtl"><font face="tahoma" size="2" color="#003399">'.$msg_body.'</font></p> 
<p align="center" dir="rtl">&nbsp;</p> 
<p align="center" dir="rtl"><font face="tahoma" style="font-size: 9pt">با آرزوی 
موفقیت برای شما</font></p> 
<p align="center" dir="rtl"> 
<font face="tahoma" color="#003399" style="font-size: 9pt"> 
<a href="http://www.hothost.ir/">هات هاست</a></font></p> 
</body> 
</html>'; 
 
//end of email body ... 
If(!mail($admin_email,'new contact',$body,"from: <$from>\n"."mime-version: 1.0\n"."content-type: Text/html; charset=utf-8")) 
{ 
   print("the mail could not be send."); 
}else 
{ 
   print('<font face="tahoma" color="#003399" style="font-size: 9pt">پیام شما با موفقیت برای مدیر سایت ارسال شد.</font>'); 
} 
 
}//end of set submit... 
Else 
{ 
?> 
<html> 
<head> 
<title>contact us ...</title> 
<meta http-equiv="content-type" content="text/html; charset=utf-8"> 
<meta http-equiv="content-language" content="fa"> 
<style> 
.text{ 
font-family:tahoma; font-size:9pt; 
} 
</style> 
</head> 
<body> 
<form name="msg_form" method="post" > 
<div align="center"> 
   <table border="0" width="359" cellpadding="2"> 
      <tr> 
         <td width="242" dir="rtl"><font face="tahoma"><span style="font-size: 9pt"> 
<input name="name_msg" size="22" class="text" dir="rtl" tabindex="1" maxlength="35" lang="fa" style="float: Right"></span></font></td> 
         <td dir="rtl"> 
<p dir="rtl" align="center"><font face="tahoma"><span style="font-size: 9pt">نام 
شما<font color="#ff0000"> 
<span lang="en-us">*</span></font></span></font></p></td> 
      </tr> 
      <tr> 
         <td width="242" dir="rtl"> 
         <p align="right"><font face="tahoma"><span style="font-size: 9pt"> 
         <input type="text" name="url_msg" size="22" dir="ltr" tabindex="2" maxlength="30" class="text"></span></font></td> 
         <td dir="rtl"> 
         <p dir="ltr" align="center"><span lang="en-us"> 
         <font face="tahoma" style="font-size: 9pt">web</font></span></td> 
      </tr> 
      <tr> 
         <td width="242" dir="rtl"><font face="tahoma"><span style="font-size: 9pt"> 
         <input name="email_msg" size="22" dir="ltr" tabindex="3" maxlength="40" class="text" style="float: Right"></span></font></td> 
         <td dir="rtl"><p dir="ltr" align="center"> 
         <font face="tahoma"><span style="font-size: 9pt"><font color="#ff0000"> 
<span lang="en-us">*</span> </font></span></font> 
         <font face="tahoma" style="font-size: 9pt"><span lang="en-us">email</span></font></p> 
         </td> 
      </tr> 
      <tr> 
         <td width="242" dir="rtl"> 
         <p align="right"><font face="tahoma"><span style="font-size: 9pt"> 
         &nbsp;<textarea rows="5" name="msg_body" cols="33" dir="rtl" class="text" tabindex="4" lang="fa"></textarea></span></font></td> 
         <td dir="rtl"> 
         <p align="center"><font face="tahoma"><span style="font-size: 9pt"> 
         پیام شماd<font color="#ff0000"><span lang="en-us">*</span></font></span></font></td> 
      </tr> 
   </table> 
</div> 
<p dir="rtl" align="center"> 
   <input type="reset" value="reset" name="reset_btn" ><input type="submit" value="submit" name="submit_msg" tabindex="5" ></p></form> 
 
<?php 
}//end of else... 
?> 
</body> 
</html>


با تشکر از رایت کلیک
با سلام
آقا این کد را با
چه اسمی ذخیره کنم
میشه بگوید
 

reza11_2005

Member
براي اين كار ما فقط از يك جدول استفاده مي كنيم ،
جدول را مطابق اين دستورات مي سازيم :
PHP:
create table `poll` (
  `id` int(11) not null auto_increment,
  `topic` text not null,
  `type` char(1) not null default '',
  `count` int(11) not null default '0',
  primary key  (`id`)
) type=myisam comment='my web poll' auto_increment=14 ;

اين جدول 4 تا فيلد داره كه id فيلد auto increament است و topic سوال راي گيري و گزينه هاي راي گيري است همچنين در فيلد type مشخص میکنیم که این رکورد سوال ما است یا یکی از گزینه های ما است ... براي سوال راي گيري كه فقط يكي است در اين فيلد q قرار مي دهيم و براي گزينه ها s قرار مي دهيم .
فیلد count هم كه تعداد راي براي هر گزينه را در خود نگه مي دارد .
خوب بريم سراغ كد :

PHP:
<?php
$host = "localhost";
$db_name = "temp";
$db_user = "root";
$db_pass = "mypassword";
 
$link = mysql_connect($host,$db_user,$db_pass) or die(musql_error());
   mysql_select_db($db_name,$link) or die("can not select data base!");
 
//check action set ...
If(isset($_get['action']))
{
   if($_get['action'] == 'vote')
   {
      $poll_id = (isset($_post['webpoll'])) ?  $_post['webpoll'] : '';
      if($poll_id != '')
      {
         $sql = "update `poll` set `count`=count+1 where `id`='".$poll_id."' and `type`='s'";
         $result = mysql_query($sql) or die(mysql_error());
      }
   }
      $count = 0;
      $sql = "select * from `poll` where `type`='s'";
      $result = mysql_query($sql) or die(mysql_error());
      $n = mysql_num_rows($result);
      for ($i=0;$i<$n;$i++)
      {
         $count += mysql_result($result,$i,3);
      };
      if($count == 0){$count = 1;};
      $output = 'the result of vote<br><br>';
      for ($i=0;$i<$n;$i++)
      {
         $num = mysql_result($result,$i,3) * 100;
         $num /= $count;
         $num = (int) $num;
         $output .= mysql_result($result,$i,1).' '.$num.'%<table border="0" width="'.$num.'%" height="20" bgcolor="#0000ff"><tr><td></td></tr></table>';
      };
 
      $output .= '<br>the webpoll result from '.$count.' votes<br><a target="_self" href="'.$_server['php_self'].'" >[back]</a>';
}
else
 
{
//نظر سنجی درباره سایت...
 
$sql = "select * from `poll` where `type`='s'";
$poll = mysql_query($sql) or die(mysql_error());
 
$topic_sql = "select `topic` from `poll` where `type`='q'";
$poll_result = mysql_query($topic_sql) or die(mysql_error());
$poll_question = mysql_result($poll_result,0,0);
 
$poll_total = mysql_num_rows($poll);
 
$output = '<p align="center" dir="ltr">'.$poll_question.'</p><form method="post" action="?action=vote">';
 
$vote_count = 0;
 
for ($i = 0; $i < $poll_total; $i++)
{
   $vote_count += mysql_result($poll,$i,3);
 
   $poll_value = mysql_result($poll,$i,0);
   $poll_name = mysql_result($poll,$i,1);
 
   $output .='<input type="radio" value="'.$poll_value.'" name="webpoll" style="cursor:hand;" >'.$poll_name.'<br>';
 
}
 
$output .='<input type="ارسال نظر" value="vote" name="submit_poll" > <br><br><a title="نمایش نتایج" target="_self" href="?action=show_result" >total votes : '.$vote_count.'</a>';
 
}//end of action set
 
//----------------------------------------
//print the output
 
print($output);
 
?>


اساس كار اين كد به اين صورت است كه تعداد آراي هر گزينه را بر تعداد كل آرا تقسيم مي كند و در صد آن را به دست مي آورد و بر اساس آن با استفاده از تگ <table> براي هر گزينه يك جدول ترسيم مي كند .

در خط 7 و 8 اتصال به هاست و انتخاب ديتا بيس را انجام مي دهيم.
از خط 10 تا 42 مربوط به ثبت آرا و نمايش نتايج مي باشد.
بقيه آنها هم براي ترسيم radio button ها و دكمه راي و ... است

بررسي ثبت راي ...
در خط 11 چك مي كنيم كه action ست شده است يا نه اگر ست شده باشد وارد شرط مي شويم
در خط 13 در صورتي شرط برقرار مي شود كه كاربر دكمه ارسال راي را كليك كرده باشد . پس از ورود به اين شرط در خط 15 poll_id كه كد منحصر به فرد هر گزينه است را به دست مي آوريم در صورتي كه poll_id مقداري نداشته باشد به اين معني است كه كاربر گزينه اي را انتخاب نكرده است پس ما فقط نتايج آرا را به او نمايش مي دهيم حالا فرض بر اين كه كاربر گزينه اي را انتخاب كرده باشد ... در خط 18 و 19 يك query را نوشته و اجرا مي كنيم ؛ اين query يك واحد به راي انتخاب شده اضافه مي كند .

خط 22 تا 41 مربوط به نمايش نتايج آرا است در اين قسمت همان طور كه گفته شد براي نمايش درصد هر گزينه تعداد آراي مربوط به آن را بر كل تعداد آرا تقسيم مي كنيم و در 100 ضرب مي كنيم و آنها را زير هم چاپ مي كنيم .

question چرا فقط از يك دستور print استفاده كرديم ؟
idea براي اين كه در برنامه هر چه كمتر از اين دستور استفاده كنيم سرعت آن بالاتر است.

امیر جان :oops: زحمت اضافه کردن این کد به سیستم رو بکشی ممنون میشم...
با سلام آقا میشه بگوید چگونه می توانم از این کد استفاده کنم
 

reza11_2005

Member
با سلام میشه دوستن آموزش را ادامه دهید
و راستی یک قسمت برای نصب سیستم
بنویسید
با تشکر
 

SME

Banned
در مورد سوال دوستمون reza11_2005:
1_
با سلام میشه بگوید کد
php
را با چه اسمی ذخیره کنم و کد دیتابیس را در چه ذخیره کنم
با تشکر
مهم نیست که اسمش چی باشه! اولی برای دیتابیس هستش. و دومی هم کد PHP.شما اگه نسخه آخر رو دانلود کنید این امکان فکر کنم توش موجود باشه.
2_ فکر کنم این امکان رای گیری هم ایجاد شده باشه. شما میتونید از این کد در صفحه اصلی سایت استفاده کنید. البته نیاز به ادیت داره که تداخل ایجاد نکنه.

امیر جان کجایی که امکانات جدید رو بزاری روی سیستم؟
بچه ها منتظرن...ممنون:)
 

Allahparast

Member
سلام به دوستم reza11_2005
شما باید سطح دسترسی پوشه ی اینکلود رو 777 کنید
بعد من اینستال رو نصب کردم چند بار مشکل نداره و فعلا تا پایان سیستم اینتستال رو باید از فایل اس کیو ال ایمپورت کنی در پی اچ پی ما ادمینت
 

Pensive-pith

Active Member
سلام دوستان عزيز من صادق هستم
راستش من مي خواستم يك كاري كنم اونم اينه كه اگه شما ها موافق باشيد براي گروه شما يك سايت بزنم هزينش هم به پاي خودم
با اين دومين:www.UFOGroup.ir
دومين و هاستش ثبت شده
فقط مي مونه كه سايت رو با چه پرتالي بسازيم
اونم به انتخاب شما
شما انتخاب كنيد خودم همه كاراشو مي كنم
من منتظر جواب شما هستم
 

reza11_2005

Member
با سلم دوستان یک وال دارم
میشه از کد سیستم های دیگر برای تکمیل این سیستم
کمک گرفت
متشکر می شوم
پاسخ دهید
 

SME

Banned
با سلم دوستان یک وال دارم
میشه از کد سیستم های دیگر برای تکمیل این سیستم
کمک گرفت
متشکر می شوم
پاسخ دهید
منظورتون چیه؟
اگه میخواید با کدهای سیستمهای آماده این سیستم رو پیشرفته تر بکنید، مشکلی نداره. فقط باید موقع جاگذاری دقت کنید که صفحات بهم نریزن...
موفق باشید/
 

Pensive-pith

Active Member
من هنوز منتظر جواب شما هستم
درباره ي بگم گفتم براي گروه مي خوام سايت بزنم نه براي سي ام اس
 

kamy882

New Member
کارتون خیلی درسته بچه ها.
فقط من موقع استفاده یه مشکل دارم
توی صفحه ی addnews وقتی ثبت خبر رو می زنم همش می نویسه:
متاسفانه مشکلی در ثبت خبر جدید وجود دارد.

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

SME

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

از طریق mysql اطلاعات واردش کردم و همه ی قسمتای دیگه ش درست بودش حتی ویرایش هم می شه اما همین یک مورد
لطفا راهنمایی کنید...
لطف دارید... :d:
همه موارد رو تکمیل میکنید و موقع ارسال این ارور رو میده؟
امیر خان کجایی که سیستم رو به روز کنی؟
من چند تا امکان جدید نوشتم که هنوز به سیستم اضافه نشده، نمیای سیستم رو به روز کنی؟
 

Pensive-pith

Active Member
من جوابي از طرف شماها دريافت نكردم مثل اينكه نمي خواين براي گروه سايت داشته باشين مشكلي نيست هر جوري كه راحت هستين
 

bigboy_200928

New Member
salam

سلام دوستان
بچه ها به فکر ما هم باشید دیگه , amir01 یک استارت خوبی زد و شماها هم خوب با هم مچ شدید
حالا دوستان بیاید یه مرجع کامل آموزش php/mysql راه بندازید و راحت درسا رو بین خودتون تقسیم بندی کنید

مشا االله همتونم که دیگه استاد و با نظرات و تز های مختلف راحت میتونید که مرجع کامل آموزشی PHP/MySql از مبتدی تا پیشرفته راه اندازی کنید

منتظر نظر بقیه دوستان و اساتید هستیم
 

جدیدترین ارسال ها

بالا