سوال

pasargad-ir

Active Member
با اجازه بزرگان سایت

ببین من یه چیز ساده ساده قرار دادم.

خودت می تونی پیاز داغش رو بیشتر کنی.


این رو به نام login.php ذخیره کن

PHP:
<?
// Find ID Address -------------------------------------------------------------
if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");
?>
<?php
if(isset($_POST['login']))
{
 if(isset($_POST['username']) AND isset($_POST['password']))
 {
  $do=1;
  $username=trim($_POST['username']);
  $password=trim($_POST['password']);
        if($username == "")
  {
   $errormsg="نام کاربري را مشخص کنيد";
   $do=0;
  }
  if($password == "")
  {
   $errormsg="کلمه رمز مشخص نشده است";
   $do=0;
  }
  // trim DATA -----------------------------------------------------------
  $password=md5($password);
  // Find User -----------------------------------------------------------
  require_once("connect_db.php");
    $query="SELECT * from $tablemembers where `username` = '$username' AND `password` = '$password'";
  $result = mysql_db_query ($dbname,$query,$link);
  if(mysql_num_rows($result) == '1')
  {
   while($row = mysql_fetch_array($result))
   {
          session_start();
          $_SESSION['fullname']=$row['fullname'];
          $_SESSION['usercode']=$row['usercode'];
          $_SESSION['userIP'] =$ip;
          // Move Page ---------------------------------------------------
          header("location:controlpanel.php");
     exit;
   }
  }else{
   $errormsg="نام کاربري يا کلمه عبور صحيح نمبيباشد";
  }
 }else{
  $errormsg="نام کاربري و کلمه عبور درج نگرديده است";
 }
}
?>
<?php
if(isset($_GET['logout']))
{
 session_start();
 session_destroy();
 header("location:index.php?page=login&Type=FTPF&errormsg=ulo");
  exit;
}
?>
<?php
if(isset($msg))     echo"<div dir=rtl align='center'><br><br><font color='green'>$msg</font></div><br>";
if(isset($errormsg))echo"<div dir=rtl align='center'><br><br><font color='red'>$errormsg</font></div><br>";
?>
<form name="" action="login.php" method="post">
username : <input name="username" type="text" value=""><br>
Password : <input name="password" type="password" value=""><br>
<input type="submit" value="login">
</form>
 

pasargad-ir

Active Member
این کد رو هم در هر صفحه ای که باید امنیت ورود داشته باشه کپی کن.

PHP:
<?php
session_start();
require_once("connect_db.php");
?>
<?
// Find ID Address -------------------------------------------------------------
if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");
?>
<?php
// Athentication ---------------------------------------------------------------
if(isset($_SESSION['userIP']))
{
 if($_SESSION['userIP'] == $ip)
 {
  $query_find="SELECT * from $tablemembers where `usercode` = '$_SESSION[usercode]' AND `fullname` = '$_SESSION[fullname]'";
  $result_find = mysql_db_query ($dbname,$query_find,$link);
  if(mysql_num_rows($result_find) == "1")
  {
   $UserAthentication="OK";
  }else{
   $errormsg="شما حق دسترسي نداريد";
   header("location:login.php?errormsg=$errormsg");
   exit;
  }
 }else{
  $errormsg="شما حق دسترسي نداريد";
  header("location:login.php?errormsg=$errormsg&errorcode=1121");
  exit;
 }
}else{
 $errormsg="شما حق دسترسي نداريد";
 header("location:login.php?errormsg=$errormsg");
 exit;
}
?>
 

pasargad-ir

Active Member
واسه بانک اطلاعاتیت هم یه DB بساز
این Query رو بزار
PHP:
CREATE TABLE `members` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `fullname` text collate utf8_persian_ci NOT NULL,
  `username` text collate utf8_persian_ci NOT NULL,
  `password` text collate utf8_persian_ci NOT NULL,
  `usercode` varchar(32) collate utf8_persian_ci NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `usercode` (`usercode`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=3 ;
INSERT INTO `members` VALUES (1, 'Web Designer', 'Admin', 'c4ca4238a0b923820dcc509a6f75849b', 'e3a7e1afbf8d7e9b99faa3b79ef2a12f');

حالا با username : Admin و Password : 1 می شه وارد شد.

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

امیدوارم این کد نیازت رو برطرف کنه.
 

hassancd

Active Member
درخواست توضیح

// trim DATA -----------------------------------------------------------
$password=md5($password);

هین قسمت چیکار میکنه و اگه میشه یک توضیح در مورد md5برام بدید اصلا نمیدونم چی هستش
با تشکر
 

sharktech

کاربر فعال
تابع trim فاصله یا همون space رو از یک رشته حذف میکنه.

تابع md5 هم برای امنیت مثلا امنیت پسور به کار میره و شما اگه در این تابع یک کاراکتر رو به عنوان رمز در نظر بگیرید این تابع برای شما 32 کاراکتر برمیگردونه.
 

pasargad-ir

Active Member
// trim DATA -----------------------------------------------------------
$password=md5($password);

هین قسمت چیکار میکنه و اگه میشه یک توضیح در مورد md5برام بدید اصلا نمیدونم چی هستش
با تشکر

اگر شما Password رو بصورت یه مقدار مثلا به شکل ADMIN داخل بانک اطلاعاتیت ذخیره کنی و اگه بانکت هم بشه خوب پسورد کاملا مشخصه.

حالا اگه وقتی می خوای پسورد رو داخل بانک بزاری بگی
PHP:
$password=md5($password);
حالا یک رشته 32 کاکارکتری داری که مشخص نیمشه که مقدار اولیه چی بوده.

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

اول با MD5 تغییرش می دی.

بعد با بانک مقایسه می کنی.

این برنامه کوچک رو ببین.

این کد ها رو به نام MD5.PHP ذخیره کن.
PHP:
<?php
echo "<div align=\"center\"> \n";
echo "<form name=\"FormName\" action=\"md5.php\" method=\"post\"><br>\n";
echo "<input name=\"pass\" type=\"text\" value=\"\"><br>\n";
echo "<input type=\"submit\" value=\"change to MD5\"><br> \n";
echo "</form>\n";
if(! isset($pass)){exit;}
$pass=trim($pass);
$md5=md5($pass);
echo "<hr>";
echo "<input name=\"text\" type=\"text\" value=\"$pass\" size=35\" style='text-align:center';><br>";
echo "<input name=\"md5\" type=\"text\" value=\"$md5\" size=35\" style='text-align:center';><br>";
echo "</div>\n";
?>
 

hassancd

Active Member
بچه ها من یک سوال دیگه که برام پیش اومده این این هستش که کاره isset چی هستش که داخل همه ی شرط ها نوشته میشه؟
و یک سوال دیگه اینکه header من کار نمی کنه مشکل از کجاست و من مجبور میشم با دستورات جاوا به صفحه های دیگه منتقل شوم .


ممنون از همه ی بچه ها که یاورم بودید.
 

pasargad-ir

Active Member
بچه ها من یک سوال دیگه که برام پیش اومده این این هستش که کاره isset چی هستش که داخل همه ی شرط ها نوشته میشه؟
و یک سوال دیگه اینکه header من کار نمی کنه مشکل از کجاست و من مجبور میشم با دستورات جاوا به صفحه های دیگه منتقل شوم .


ممنون از همه ی بچه ها که یاورم بودید.


اگر بگی

PHP:
if($ali == 1)
{
 echo"OK";
}

و واقعا اون متغر ALI وجود نداشته باشه پیغام :

Notice: Undefined variable: ali in ...
رو می ده.

اما اگه بگی :

PHP:
if(isset($ali))
{
 if($ali == 1)
 {
  echo"OK";
 }
}

اول چک میکنه که آیا این متغیر وحود داره یا نه

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

sharktech

کاربر فعال
شکل درست (البته برای درک انسان) این تابع اینه : is set یعنی چیزی ست شده.
 

pasargad-ir

Active Member
header من کار نمی کنه مشکل از کجاست و من مجبور میشم با دستورات جاوا به صفحه های دیگه منتقل شوم .

ببین

وقتی شما از
PHP:
header("location:login.php?errormsg=$errormsg");

حالا اگه اینجوری باشه که درسته
PHP:
<?php
header("location:index.php");
?>
<html>
<head>
  <title></title>
</head>
<body>

ولی اگه شد اینجوری اونوقت خطا میگیره :

PHP:
<html>
<head>
  <title></title>
</head>
<body>
<?php
header("location:index.php");
?>
</body>
</html>
 

hassancd

Active Member
پس نتیجه میگیریم که باید قبل از کد های html بگذاریم و خطا مال این هستش
دوستان یک سوال دیگه من میخوام text field داشته باشم که فقط حروف یا فقط اعداد رو بتونم توش بنویسم باید چیکار کنم ؟
ممنون از راهنمایی هاتوون
 

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

بالا