PDA

View Full Version : کلاس این کد چیه ؟



webmaker
چهارشنبه 31 خرداد 1391, 22: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, 07:40 صبح
اکثر دوستان میتونند کد کلاس این رو به شما بدند ، ولی اگر با کدنویسی کلاس آشنایی دارید ، بهتره خودتون شروع کنید و اینجا رفع اشکال بشه . برای ایده گرفتن هم ،‌ از آموزشهای آقای شهرکی استفاده کنید. در آموزش 8 و 9 فایل db.php کلاس ها رو داره . نگاه کنید :
http://barnamenevis.org/showthread.php?269194-آموزش-مرحله-به-مرحله-PHP-از-پايه-با-مثال

webmaker
جمعه 02 تیر 1391, 09:38 صبح
لینک هایی که گذاشته کار نمی کنن.
نه والا اگه بلد بودم که سوال مطرح نمیکردم

lady64
جمعه 02 تیر 1391, 09: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, 12: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, 12:44 عصر
باشه لینک نمیدم ، ولی پیشنهاد میکنم دوباره نگاهی به اون لینکها بندازید .:چشمک:
شما در کلاس cms و در تابع connect یک بار اتصال رو ایجاد کردید ، دیگه نیازی به اتصال دوباره در خارج کلاس نبود.
کلاس رو برای سهولت کار و استفاده ی مجدد مینویسیم . بهتره مقادیر متغیر مثل passwordd و paswordgo رو بصورت متغیر به تابع dispaly ارسال کنید و در خود کلاس استفاده نکنید.
در مورد وارد کردن پسوورد اشتباه هم ، شما اصلا در کلاستون تابعی برای select کردن یوزر و پسوورد ننوشتید که چک کنه آیا پسوردد درست هست یا نه ؟مستقیما آپدیت کردید.
باز هم نگاهی به آموزش آقای شهرکی بندازید.

lady64
جمعه 02 تیر 1391, 13: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, 17: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, 21:28 عصر
سریع نوشته بودم ، به این علت خط 32 ناقص بود که اصلاح کردم . شما در table کد کاربری یونیک ساختید ؟
همچنین شما باید ابتدا 2 تا تکست فیلد برای دریافت کدکاربری و رمز داشته باشید و یک تکست فیلد هم برای دریافت رمز جدید و همه ی اینها باید درون یک فرم باشند و یک دکمه ی submit هم داشته باشیم.
ببینید من کلیت رو نوشتم ، جزئیات رو خودتون اصلاح کنید . مثلا وقتی کد کاربری و رمز عبور درست بود ، یک شرط قرار بدید که تکست فیلد مربوط به وارد کردن رمز عبور جدید فعال بشه .
اگه اصلاح نشد ، کل کد رو بزارید.