سوال

hassancd

Active Member
سلام دوست عزیز
من یک سیستم طراحی ساختم و میخوام وقتی فرد وارد سیستم بشه (توسط usernam&password) طی صفحاتی که اون قراره بره برای این که بتونم اطلاعاتی که وارد میکنه ثبت کنم نیاز به username دارم که به تمتم صفحاتی که میره بفرستم حالا برای این ارسال چیکار باید بکنم اگه راهنماییم کنید ممنون میشم
 

sharktech

کاربر فعال
هنگام ورود به سیستم, username کاربر رو بریز توی session یا کوکی و در هر صفحه ای که خواستی از روی session یا کوکی بخون.
 

pasargad-ir

Active Member
PHP:
اول صفحت نویس
session_start();
if(username و Password = OK)
{
$_SESSION[یه اسمی بده]=ok; //یا هر مقدار دیگه ای
}

حلا واسه صفحاتت
PHP:
session_start();
if(!$_SESION[نام]){exit;}
 

hassancd

Active Member
میشه نسبت به بانکس رو هم برام بنویسید و یک مثال برام بنویسید.
تازه به جای اسمی بنویس اسم متغیر باید بزارم که درون اون user name هست؟
تازه درمورد امنیت همین کار رو بکنیم خوبه یا نه باید کد دیگری رو بنویسیم؟
 

hassancd

Active Member
ارور میده

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\Amozeshgah\login.php:2) in C:\xampp\htdocs\Amozeshgah\login.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\Amozeshgah\login.php:2) in C:\xampp\htdocs\Amozeshgah\login.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\Amozeshgah\login.php:2) in C:\xampp\htdocs\Amozeshgah\login.php on line 38


هد خطاد هارو به من داد
 

scup

Member
یک روش دیگه:
*ضریب امنیت این کار پایینه
*برنامه نویسش هم طولانی تر هست
پس بهتره راه اول رو انجام بدی
ولی برای اطلاع میگم:
تو دیتا بیس ip طرفو معادل یوزرش قرار بده و وقتی وارد میشه ip مساویش بیاد بعد اعلام کن که اگه ip یکسان هست پس یوزر معادلش login هست.
 

pasargad-ir

Active Member
ببین از MD5 استفاده کن.

یه بانک بساز که دارای
id
username
password
باشه.

حالا

PHP:
$password=md5($password);

بعد این خط رو بعنوان رمز بزار تو بانک

واسه ورود بررسی کن که

آیا همچین کاربری تو بانکت هست ؟

اگه بود یه Session بساز با یه متغیری

می تونی IP حاضر سیستم رو هم در لحظه ورود تو یه session دیگه ای ذخره کنی.

حالا در اولین خط هر صفحه
session رو start کن
بعد بررسی کن ببین اصلا همچین session هایی وجود داره یا نه
اگه بود مقدارشون رو بررسی کن ببین که آیا IP الان کاربر با IP ذخیره شده در session برابره یا نه ؟؟؟

این 1 روشه

هرکسی یه روشی داره

تو وب سایت های بزرگ الگوریتم هایی طراحی می شه که هوش از سر خود طراح میبره.

وب سایتت در چه هد بزرگه ؟؟؟

مال مشتریه ی مال خودت ؟؟؟ یا اصلا خودت می خواد یاد بگیری !

اینا همه در پیچیدگی برنامه تاثیر داره ....
 

pasargad-ir

Active Member
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\Amozeshgah\login.php:2) in C:\xampp\htdocs\Amozeshgah\login.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\Amozeshgah\login.php:2) in C:\xampp\htdocs\Amozeshgah\login.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\Amozeshgah\login.php:2) in C:\xampp\htdocs\Amozeshgah\login.php on line 38


هد خطاد هارو به من داد

ببین حتما قبل از start session چیزی print شده

باید اینجوری باشه

PHP:
<?php
session_start();
?>
<html>
<head>
  <title></title>
</head>
<body>
</body>
</html>
 

Masoud1365

مدیر انجمن
میشه نسبت به بانکس رو هم برام بنویسید و یک مثال برام بنویسید.
تازه به جای اسمی بنویس اسم متغیر باید بزارم که درون اون user name هست؟
تازه درمورد امنیت همین کار رو بکنیم خوبه یا نه باید کد دیگری رو بنویسیم؟

شما برو داخل سایت hotscripts.com . اونجا انواع کدهای ثبت نام رو داره چنتاشو بگیر و ببین چطوری نوشتن بعدش یا خودت یکی بنویس یا تغییرش بده !
( در ضمن اگر که توی همین انجمن هم سرچ کنی کلی آموزش در مورد ثبت نام و این چیزا پیدا می کنی. )

موفق باشی
 

hidensoft

Member
ببین حتما قبل از start session چیزی print شده
بعضی مواقع نیاز به این نیست که چیزی پرینت شده باشه ، کافیه فقط یه چیزی به هدر ارسال شده باشه حالا هر چیزی
یا اینکه به دلیل استفاده از ادیتور های نا مناسب یه کارکتر در ابتدای فایل قرار می گیره که موجب بروز این خطا می شه که برای پاک سازیش یا باید قایل رو حذف کنید یا اینکه با یک هگز ادیتور بازش کنید و اون کارتر ابتدایی رو حذف کنید.

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

$password=md5($password);
کلا بهتره تمام اطلاعاتی که در سشن ها ذخیره می شه بصورت کد شده باشد. می تونید از توابع کد با بازگشت استفاده کنید.
 

pasargad-ir

Active Member
از تابع ob_start استفاده کنید

مرسی از دوست خوبم.

می شه در مورد تابع
PHP:
ob_start(callback output_callback,int chunk_size,bool erase);

بیشتر توضیح بدین ؟؟؟

آموزش استفادش هم در منوال هست

یه آدرس مشخص هم اگه دارین یا یه مثال از ورودی و خروجی رو بگین.

متشکرم.
 

hidensoft

Member
فرمت کلی
PHP:
bool ob_start  ([ callback $output_callback  [, int $chunk_size  [, bool $erase  ]]] )

:nokte: پارامتر هایی که درون کلوشه " [ ] " قرار دارند پارامتر های غیر اجباری هستند

PHP:
callback $output_callback
این پارامتر اختیاری است و می تواند نام یک تابع باشد. این تابع یک مقدار استرینگ می گیرد و خروجی تابع هم باید استرینگ باشد. این تابع زمانی فراخوانی می شود که بافر خرجی flush یا clean شده باشد توسط ob_flush(), ob_clean() یا توابع هم تراز.
زمانی که تابع فراخوانی می شود خروجی بافر را به عنوان پارامتر اول میگیرد و خروجی تابع هم جایگزین می شود. اگر output_callbac نام یک تابع نباشد ob_start مقدار FALSE را ارجاع می دهد.

PHP:
int $chunk_size
همونطور که مشخصه این پارامتر یه پارامتر عددی هست. اگر این پارامتر مشخص شده باشه هر زمان که حجم بافر مساوی یا بیشتر از chunk_size بشه به خروجی ارجا داده می شه.

PHP:
bool $erase
این پارامتر هم بولین هست. اگه این پارامتر به مقدار FALSE ست شود بافر در انتهای اسکریپت حذف نخواهد شد


خروجی تابع
در صورت موفقیت TRUE و در صورع عدم موفقیت FALSE
 

hidensoft

Member
PHP:
<?php

function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");

?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php

ob_end_flush();

?>
خروجی
کد:
<html>
<body>
<p>It's like comparing oranges to oranges.</p>
</body>
</html>
PHP:
<?php
ob_start();

echo " ob_start Complate";

ob_end_flush();

echo " after Flush ";
?>
خروجی
کد:
 ob_start Complate
after Flush
 
آخرین ویرایش:

hidensoft

Member
بعد از ob_start هر چی اکو بزنی پرینت کنی ، برای خروجی ارسال نمی شه
تا زمانی که به تابع ob_end_flush برسه. بعد خروجی ارسال می شه. بخاطر همین دیگه شما خطای header already sent by رو دریافت نمی کنید
 

amirali008

New Member
ميتوني هم يه كلاس public بسازي و به محض ورود اطلاعات بره تو يه متغير public shared
 

hassancd

Active Member
ممنون بچه ها ولی من یک خورده گیج شدم لطف کنید یک خورده کمکم کنید و برام یک مثال بزنید ممنون میشم
 

hidensoft

Member
amirali008 فکر می کنم پیش کشیدن بحث کلاس برای این دوستمون خیلی زود باشه.

دوست عزیز شما از کلاس صرفه نظر کن. دقیقا کجا رو متوجه نشدی
 

pasargad-ir

Active Member
خیلی سنگین جلو رفتیم.

از مدیر انجمن تقاضا دارم بحث های مربوط به کلاس رو در یه تاپیک جدید باز کنه و انجا در موردش صحبت کنیم. (در صورت امکان)

این بحث خیلی جالب و خوب داره جلو می ره.

فکر کنم این دوست عزیر هم نیاز به یه برنامه ساده و راحت نصب داشته باشه که پیچیده هم نباشه.
 

hassancd

Active Member
آره بچه ها من فقط میخواستم امنیت سایتم رو افزایش بدم و بعضی بچه ها چیزایی گفتند که اصلا من نفهمیدم .
مثلا یک جایی از بچه ها گفت میتونی ip طرف رو بگیری و همش مقایسه کنی. خوب این آح گرفتن چجوری هستش و من حرف نمی خوام و یک مثال توپ می خوام اگه بچه ها تونستند یک کمک برسونند. ممنون
 

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

بالا