PDA

View Full Version : سوال: مشكل در login كردن...فوري!



marjane_abi
چهارشنبه 16 تیر 1389, 11:30 صبح
سلام
ممنون میشم اگه کسی بتونه اشکال لوگین برنامه من رو حل کنه
لوگین به هر کاربری اجازه ورود میده...در حالی که تنها مدیر سایت که در دیتابیس تعریف شده اجازه ورود داره.
در ضمن session هم خطا میده که نمی فهمم مشکل از کجاست
و سومین مشکل هم نشون دادن مطالب فارسی ثبت شده در دیتابیس هست.با وجودی که از یو تی اف 8 استفاده کردم هم در بانک هم در صفحه نمایش فارسیش مشکل داره
لینک تیکه برنامه رو میذارم.
ممنون می شم اگه بهم بگین اشکال کارم کجاست
لینک:
http://www.justupit.com/files/WFU5PPQU/CMS.rar

Reza1607
چهارشنبه 16 تیر 1389, 11:55 صبح
برای حل مشکل نمایش دادن فارسی
تابع db_connect توی فایل db_fns.php رو اینجوری تغییر بده


function db_connect()
{
$handle = new mysqli('localhost', 'root', '', 'content');
if (!$handle)
{
return false;
}
$handle->query("SET NAMES 'utf8'"); // تنها این خط رو اضافه کن
return $handle;
}


برای مشکل هشدار های سشن هم این خط رو به اول فایل writer.php اضافه کن و اون خطی که همین فایل رو include کرده بودی رو حذف کن

<?php
include_once('include_fns.php');
?>

برای مشکل لاگین هم من جایی برای ورود دیگر اعضا تو پروژه تون ندیدم در ضمن در تمامی صفحاتی که مشکل سشن وجود داشت باید همون کاری رو که گفتم انجام بدین
یک نکته درباره سشن می گم تا انشا الله دیگه به مشکل بر نخوری
دستور session_start رو اول صفحاتی که نیاز به استفاده از سشن داری استارت کن یعنی قبلا از هر دستوری حتی <html>

marjane_abi
چهارشنبه 16 تیر 1389, 12:02 عصر
سلام
ممنون كه جوابم و دادين
براي لوگين كردن تو خط آدرس بايد admin رو تايپ كنيد
اگه اشتباه نكنم لينكي هم براش تو صفحه گذاشتم به نام admin login
ميشه يه بار ديگه چك كنيد
ممنون مي شم

Reza1607
چهارشنبه 16 تیر 1389, 12:17 عصر
من برای ادمین چک کردم درسته
ولی منظور شما از این که

لوگین به هر کاربری اجازه ورود میده
این هست که اگه مدیر یک بار وارد بشه بقیه می تونند وارد بشن باید چک کنم
حالا منظورت همینه؟

marjane_abi
چهارشنبه 16 تیر 1389, 12:21 عصر
نه يعني با هر كلمه عبور و يا رمزي مي شه وارد شد
حتي اگه توي بانك ثبت نشده باشه
يعني همه مي تونن وارد شن!

Reza1607
چهارشنبه 16 تیر 1389, 12:33 عصر
توی فایل user_auth_fns.php به جای کوئری مربوط به تابع login
کد زیر رو قرار بده


$passwd=SHA1($password);
$query="select * from writers
where username like '{$username}' and
password like '{$passwd}'";
$result = $handle->query($query);


در ضمن در اول تمامی فایل هایی که نیاز به مجوز هست کد زیر رو اضافه کن


<?php
include ('include_fns.php');
if(!isset($_SESSION['auth_user'])) header('Location: writer.php');
?>

marjane_abi
چهارشنبه 16 تیر 1389, 12:40 عصر
اون دو تا تغيير اول رو كه اعمال كردم الان اين خطا رو دارم

Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wamp\www\CMS\CMS\index.php on line 62

كه اصلا ازش سر در نميارم!:عصبانی++:

marjane_abi
چهارشنبه 16 تیر 1389, 13:25 عصر
اون دو تا تغيير اول رو كه اعمال كردم الان اين خطا رو دارم

Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wamp\www\CMS\CMS\index.php on line 62

كه اصلا ازش سر در نميارم!:عصبانی++:
الان كه فايل قبلي رو چك كردم ديدم ربطي به اضافه كردن كدهاي جديد و تغييرات نداره ، ولي نمي دونم اين خطا از كجا پيداش شد!
امروز خيلي بهم كمك كردين.ممنون مي شم اين مشكل رو هم حل كنيد!چون اصلا معني اين خطا رو نمي دونم
:خجالت:

Reza1607
پنج شنبه 17 تیر 1389, 16:37 عصر
هر جا همچين خطايي داد به جاي اين كد


->fetch_assoc();

كد زير رو قرار بده


fetch_array(MYSQLI_ASSOC)

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

jalaladdin
پنج شنبه 17 تیر 1389, 18:40 عصر
برای فرم ثبت نام این کد را نوشتم و همچنین برای اینکه رمز عبور بصورت رمزی در پایگاه داده ذخیره شود
قبل از پسورد md5 گذاشتم اما وقتی در فرم لاگین نام کاربری و پسورد را وارد میکنم با این پیام که نام کاربری وکلمه عبور اشتباه است مواجه میشوم

اگر این md5 را بردارم مشکل حل میشه اما من میخوام رمز عبور بصورت رمزی در دیتابیس ذخیره بشه
لطفا راهنمای کنید

<?php


$con=mysql_pconnect("localhost","root","");
if(!$con)
{die('could not connect');}
mysql_select_db("register",$con);
$sql = "SELECT count(*) FROM users WHERE username = '{$_POST[username]}'";

$result = mysql_query($sql);

$e=mysql_query($sql);
$rec = mysql_fetch_array($result);


if($rec[0]!=0){

echo "<meta http-equiv='refresh' content='0; URL=register.html'>"; exit();
}


$sql = "SELECT count(*) FROM users WHERE email = '{$_POST[email]}'";
$result = mysql_query($sql);
$e=mysql_query($sql);
$re = mysql_fetch_array($e);
if($re[0]!=0){

echo "<meta http-equiv='refresh' content='0; URL=register.html'>"; exit();
}

else{
$sql="insert into users(username,email,password,repassword)
values('$_POST[username]',md5('$_POST[password]'),md5('$_POST[repassword]'))";



$result = mysql_query($sql);

if($result)
{
echo mysql_affected_rows().'<b> عضویت شما با موفقیت انجام شد </b>';
}


mysql_close($con);


}
?>

jalaladdin
پنج شنبه 17 تیر 1389, 18:43 عصر
اگر این md5 را بردارم مشکل حل میشه اما من میخوام رمز عبور بصورت رمزی در دیتابیس ذخیره بشه

Reza1607
جمعه 18 تیر 1389, 17:47 عصر
بايد قسمت هايي رو كه مي خواي كد كني رو بايد بيرون كوئري انجام بدي

صابر طهماسبی
جمعه 18 تیر 1389, 18:26 عصر
اگه کد لاگین هم بذارید ممکنه بتوان کمکی کرد
شاید یادتون رفته در query لاگین مجددا داده ها را md5 کنید(به نظرم اومد شاید این کارو نکرده باشید آخه خودم یه بار اینکار بادم رفت)
کد query لاگین شما باید شبیه کد زیر باشه :




"SELECT * FROM users WHERE username='{$_POST['username']}' AND password=md5('{$_POST['password']}')"