View Full Version : کلاس این کد چیه ؟
webmaker
چهارشنبه 31 خرداد 1391, 23:11 عصر
سلام.
دو صفحه داریم.
اولی html به صورت زیر :
<form action="password.php" method="POST">
رمز فعلی :<input type="text" name="passgo" id="passgo" size="20"><br>
رمز جدید :<input type="text" name="password" id="password" size="20"><br>
<input type="submit" name="submit" VALUE="send" />
</form>
دومی فایل php به صورت زیر :
<?php
//برای اتصال با مای اس کیو ال
$handle=mysql_connect('localhost','root','');
// اگر به مای اس کیو ال متصل نشود پیغام بدهد
if($handle==false){
die("can not connect mysql.\r\n");
}
//مشخص کردن دیتابیس
$db=mysql_select_db('users');
// در صورت متصل نشدن پیغام خطا دهد
if($db==false){
die("can not connect db.\r\n");
}
//برای دریافت پسورد جدید
$password = $_POST['password'];
if($password=="")
die('پسورد جدید رو ننوشتید');
//برای دریافت پسورد قبلی
$passgo= $_POST['passgo'];
if($passgo=="")
die('پسورد فعلی رو ننوشتید');
// با استفاده از متغییرها پسورد جدید رو جایگزین پسورد قبلی می کند
$query="UPDATE personel SET password='$password' WHERE password='$passgo'";
$result=mysql_query($query,$handle);
//در صورت دریافت نکردن اطلاعات پیغام خطا می دهد
if($result==false){
die("error with query\r\n");
}
$num=mysql_affected_rows($handle);
//در صورت تغییر رمز عبور، شماره یک میدهد در غیر این صورت شماره صفر
echo "تغییر رمز عبور:$num.\r\n";
// مای اس کیو ال بسته می شود.
mysql_close($handle);
?>
در واقع این کد برای تغییر رمز عبور هست.
کلاس کد php رو از دوستان میخوام .
لطف کنید و بگید ممنون میشم.
lady64
پنج شنبه 01 تیر 1391, 08:40 صبح
اکثر دوستان میتونند کد کلاس این رو به شما بدند ، ولی اگر با کدنویسی کلاس آشنایی دارید ، بهتره خودتون شروع کنید و اینجا رفع اشکال بشه . برای ایده گرفتن هم ، از آموزشهای آقای شهرکی استفاده کنید. در آموزش 8 و 9 فایل db.php کلاس ها رو داره . نگاه کنید :
http://barnamenevis.org/showthread.php?269194-آموزش-مرحله-به-مرحله-PHP-از-پايه-با-مثال
webmaker
جمعه 02 تیر 1391, 10:38 صبح
لینک هایی که گذاشته کار نمی کنن.
نه والا اگه بلد بودم که سوال مطرح نمیکردم
lady64
جمعه 02 تیر 1391, 10:46 صبح
پس اینجا رو امتحان کنید .
http://barnamenevis.org/showthread.php?269194-آموزش-مرحله-به-مرحله-PHP-از-پايه-با-مثال/page50
نه دوست عزیز . کسی نمیگه سوال مطرح نکنید ، برای مواردی مثل کلاس نوشتن ، بهتره اول شی گرایی مطالعه بشه و بعد در موردش سوال بشه . مثلا اینجا رو ببینید :
http://forum.iranphp.org/Thread-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C
webmaker
جمعه 02 تیر 1391, 13:19 عصر
کلاسشو اینطور نوشتم:
<?php
class cms{
var $host="localhost";
var $user="root";
var $database="db";
function connect()
{
mysql_connect($this->host,$this->user) or die("Could not connect. " . mysql_error());
mysql_set_charset('utf8');
mysql_select_db($this->database) or die("Could not select database. " . mysql_error());
}
function display()
{
$password = $_POST['password'];
$passgo = $_POST['passgo'];
$query="UPDATE personel SET password='$password' WHERE password='$passgo'";
$result=mysql_query($query) or die (mysql_error());
if ($result=mysql_query($query));
//در صورت تغییر رمز عبور، شماره یک میدهد در غیر این صورت شماره صفر
echo " رمز عبور تغییر کرد";
}
}
$cms=new cms();
$cms->host = 'localhost';
$cms->user = 'root';
$cms->database = 'db';
$cms->connect();
$cms->display();
?>
حالا یه سوال.
وقتی پسوردی رو که میخوام وارد کنم , وارد می کنم و پسورد جدید رو هم وارد می کنم پیغام : رمز عبور تغییر کرد
میاد اما اگه پسورد اشتباه در قسمت پسورد فعلی وارد کنم و پسورد جدیدی هم وارد کنم, با اینکه پسورد در دیتابیس نیست و اشتباه وارد کردم بازهم پیغام : رمز عبور تغییر کرد. میاد. لطفا بگین برای حل این مشکل چه کدی بنویسم.
خواهشا لینک ندید کدشو میخوام.if و else رو البته با توجه به اینکه تازه کار توی کلاسم نوشتم اما کار نکرد.
lady64
جمعه 02 تیر 1391, 13:44 عصر
باشه لینک نمیدم ، ولی پیشنهاد میکنم دوباره نگاهی به اون لینکها بندازید .:چشمک:
شما در کلاس cms و در تابع connect یک بار اتصال رو ایجاد کردید ، دیگه نیازی به اتصال دوباره در خارج کلاس نبود.
کلاس رو برای سهولت کار و استفاده ی مجدد مینویسیم . بهتره مقادیر متغیر مثل passwordd و paswordgo رو بصورت متغیر به تابع dispaly ارسال کنید و در خود کلاس استفاده نکنید.
در مورد وارد کردن پسوورد اشتباه هم ، شما اصلا در کلاستون تابعی برای select کردن یوزر و پسوورد ننوشتید که چک کنه آیا پسوردد درست هست یا نه ؟مستقیما آپدیت کردید.
باز هم نگاهی به آموزش آقای شهرکی بندازید.
lady64
جمعه 02 تیر 1391, 14:14 عصر
ببینید برای تغییر رمز ، اول شما باید با نام کاربری که در جدولتون یونیک هست ، چک کنید که چنین کاربری دارید یا خیر ؟ اگر وجود داشت ، اونوقت میتونید اجازه بدید که پسوورد رو تغییر بده . یک نمونه با توجه به مثالتون نوشتم، امیدوارم بتونید ازش ایده بگیرید .
<?php
class cms{
var $host="localhost";
var $user="root";
var $database="db";
function connect()
{
mysql_connect($this->host,$this->user) or die("Could not connect. " . mysql_error());
mysql_set_charset('utf8');
mysql_select_db($this->database) or die("Could not select database. " . mysql_error());
}
public function SelectRow($user,$pass)
{
$this->connect();
$result=mysql_query("select * from `personel` where (`user`='{$user}') and (`password`='{$pass}')");
return $result;
}
function update($user,$newpassword)
{
$this->connect();
$result=mysql_query("UPDATE personel SET password='$newpassword' WHERE user='$user'");
return mysql_affected_rows();
}
}
$user=$_POST['user'];// دریافت نام کاربری از تکست فیلد
$pass=$_POST['pass'];// دریافت پسوورد قدیم از تکست فیلد
$cms=new cms();
$result=$cms->SelectRow($user,$pass);
$is=mysql_num_rows($result);
if($is==0)
echo 'رمز یا نام کاربری نادرست است';
if($is==1) // اگر اطلاعات وارد شده درست بود
echo 'پسورد جدید رو وارد کنید';
$newpassword=$_POST['newpassword'];// وارد کردن پسوورد جدید
$result2=$cms->update($user,$newpassword);
if($result2)
echo 'اطلاعات با موفقیت ثبت شد';
?>
خط 32 اصلاح شد
webmaker
جمعه 02 تیر 1391, 18:15 عصر
ارور زیر رو میده.
فایل html رو درست کردم اما بازم ارور زیر :
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\wamp\www\password.php on line 33
رمز یا نام کاربری نادرست است
Notice: Undefined index: newpassword in D:\wamp\www\password.php on line 38
اطلاعات با موفقیت ثبت شد
lady64
جمعه 02 تیر 1391, 22:28 عصر
سریع نوشته بودم ، به این علت خط 32 ناقص بود که اصلاح کردم . شما در table کد کاربری یونیک ساختید ؟
همچنین شما باید ابتدا 2 تا تکست فیلد برای دریافت کدکاربری و رمز داشته باشید و یک تکست فیلد هم برای دریافت رمز جدید و همه ی اینها باید درون یک فرم باشند و یک دکمه ی submit هم داشته باشیم.
ببینید من کلیت رو نوشتم ، جزئیات رو خودتون اصلاح کنید . مثلا وقتی کد کاربری و رمز عبور درست بود ، یک شرط قرار بدید که تکست فیلد مربوط به وارد کردن رمز عبور جدید فعال بشه .
اگه اصلاح نشد ، کل کد رو بزارید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.