PDA

View Full Version : مشکل آپلود سایت بر روی هاست



parnian~parnian
شنبه 14 تیر 1393, 19:00 عصر
با سلام

یه سوالی داشتم از دوستای گلم

من وقتی سایتم رو آپلود میکنم هیچ مشکلی نداره ولی تو بخش login هر کاری میکنم نام کاربری و رمز عبور رو قبول نمی کنه .......... :(
ولی توی هر سیستمی که به صورت local تست می کنم این مشکل رو نداره


به نظرتون مشکل کجاست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟

MMSHFE
یک شنبه 15 تیر 1393, 11:15 صبح
تنظیمات دیتابیس رو درست وارد کردین؟ روی هاست با لوکال فرق میکنه.

parnian~parnian
سه شنبه 17 تیر 1393, 16:07 عصر
اره همه چی درسته ...... چون توی صفحه login یه چیزایی رو از پایگاه داده میگیره و درست نمایش می ده
این کدی هست که من چک میکنم و کاربر وارد صفحه اصلی میشه:


<?phpinclude 'object/main.php';
$security= new security;
$connect = new connect;
if(isset($_POST['login'])){
if($_POST['username']=='' || $_POST['password']=='') {
$security->Redirect("login","empty=1090");
} else{
$username = $security->Check_Post($_POST['username']);
$password = $security->Check_Post($_POST['password']);
$pass_hash = $security->hash_value($password);
$company = $security->Check_Post($_POST['company']);
if($_SESSION['captcha']!=$_POST['captcha']) {
$security->Redirect("login","captcha=9022");
} else{
$sql="SELECT * FROM `user` WHERE username='".$username."' && password='".$pass_hash."' && company_name='".$company."' ";
$result = $connect->query($sql);
if(mysql_num_rows($result)>0)

{
$rows=mysql_fetch_assoc($result);
$national_num = $security->Check_Post($rows["national_num_user"]) ;
$sql2="SELECT * FROM `employer` WHERE national_num='".$national_num."' ";
$result2 = $connect->query($sql2);
$rows2=mysql_fetch_assoc($result2);
$_SESSION['national_num']= $national_num;
$_SESSION['user_name']= $rows2['name_em'];
$_SESSION['user_log'] = true;
$security->Redirect("index","welcome=1010");
} else{
$security->Redirect("login","errorlog=9020");
} /*} else{
$security->Redirect("index","errorlog=9020");
}*/ }}}else{$security->Redirect("index");}?>

parnian~parnian
سه شنبه 17 تیر 1393, 16:17 عصر
جالب اینجاست که وقتی خط 17 :

if(mysql_num_rows($result)>0)

رو کلا برمیدارم وارد صفحه اصلی میشه (البته بدون امنیت دیگه یعنی هر نام و رمزی که وارد کنین وارد برنامه میشه ) بدون مشکل البته واسه تست اینکارو کردم

حالا نظر شما چیه؟؟؟؟؟؟؟؟ من واقعا گیج شدم

alibehroozi
سه شنبه 17 تیر 1393, 16:21 عصر
باید اول بیاید تعداد رکورد هارو داخل متغیر بگذارید سپس چک کنید

parnian~parnian
سه شنبه 17 تیر 1393, 16:33 عصر
ممنون ولی فکر نمیکنم تفاوتی داشته باشه :(

alibehroozi
سه شنبه 17 تیر 1393, 16:37 عصر
فکر نکنم کد شما مشکلی داشته باشه اگر امتحان کردید و نشده
ولی من همیشه همچنین کاری میکنم موقع گرفتن تعداد رکورد یعنی اول وارد یک متغیر میکنم سپس چک میکنم
برای احتیاط فاصله بین 0 و علامت بزرگتر و دستور رو بگذارید

parnian~parnian
چهارشنبه 18 تیر 1393, 10:45 صبح
دوستان عزیز من کل کلاس main رو میذارم که واضح تر باشه ............ و اینکه این کلاس رو از سایت دانشجویار استفاده کردم فیلم اموزشی اقای اکبری منش........



<?php
session_start();
class security{ //HASH
function hash_value($value){
return md5($value)."speiw#sb^&ewiq"; }
//check post data function Check_Post($value){
$Return1 = mysql_real_escape_string($value);
$Return2 = htmlspecialchars($Return1);
return $Return2;
} //check get data
function Check_Get($value){
$Return1 = mysql_real_escape_string($value);
$Return2 = htmlspecialchars($Return1);
$Return3 = intval($Return2);
return $Return3;
} //check get search
function Check_Get_Search($value){
$Return1 = mysql_real_escape_string($value);
$Return2 = htmlspecialchars($Return1);
return $Return2; }
//redirect function function Redirect($page,$parametr) {
if(isset($page) && isset($parametr))
{ $page_filter = $page.".php?".$parametr;
header("location:$page_filter");
exit;
} else if(isset($page)){
$page_filter = $page.".php";
header("location:$page_filter");
exit;
} } //covering function ---->include()
function Covering($page){
$page_filter = $page.".php";
include "$page_filter"; }
//check manager log
function check_manage() { if($_SESSION['manage_log']!=true) { $this->Redirect("login-admin"); } }
//check user log function check_user() { if($_SESSION['user_log']!=true) { $this->Redirect("login"); } }
function read($value){ $return1=strip_tags($value); $return2=stripslashes($return1); return $return2; } }
class template{ //check get parametr
function is_parametr($parametr,$text,$color) {
$security=new security; $template=new template; if(isset($_GET[$parametr])) { $security->Check_Get($_GET[$parametr]); $template->massage($text,$color); } }
//error or success massage
function massage($text,$color){ echo "<b><font color=$color size='4'>$text</font></b>"; } }
class connect{//connect to server and database and create security queryfunction query($sql){
$Server_name = "localhost"; $Server_username = "root"; $Server_password = ""; $Dbname = "test"; $link=mysql_connect($Server_name,$Server_username, $Server_password) or exit("Error in connect to server");
if($link) {
if(mysql_select_db($Dbname)) {
mysql_query("set names utf8"); mysql_query("set charset utf8"); $result = mysql_query($sql);
if(!$result) { echo "Error in query"; } return $result; }
else{ echo "Erron in connect to database"; } }
else{ echo "Error in connect to server"; }}}
?>

MMSHFE
چهارشنبه 18 تیر 1393, 10:53 صبح
یکبار mysql_error رو قبل از دستور mysql_num_rows با دستور echo نمایش بدین احتمالاً کوئری شما خطا داره.

parnian~parnian
چهارشنبه 18 تیر 1393, 11:21 صبح
ممنون از پاسختون ...............

من کد login رو با این کد ها تغییر دادم و مشکل حل شد


$p= sprintf("SELECT * FROM `user` WHERE username = %s AND password = %s AND company_name = %s" , Getsql($_POST['username'],'text'),Getsql($pass_hash,'text') ,Getsql($_POST['company'],'text')); mysql_query("set names utf8"); mysql_query("set charset utf8"); $r=mysql_query($p);

ولی مسئله ای که وجود داره اینه :
الان کد های insert , delete , update هم کار نمیکنن و من فکر میکنم مشکل من تو قسمت مقدار گرفتن از textfield هاست که login هم مشکل داشت حالا
میخوام بدونم به چه دلیلی این کد ها مشکل داره در حالت online ؟؟؟؟؟؟؟؟؟؟؟؟

یه نمونش اینه :

$username = $security->Check_Post($_POST['username']);

اینم متد check_post :


function Check_Post($value){ $Return1 = mysql_real_escape_string($value); $Return2 = htmlspecialchars($Return1); return $Return2; }

MMSHFE
چهارشنبه 18 تیر 1393, 12:01 عصر
توی اینجور خطاها کلاً قبل از هر کاری کوئری رو چاپ کنید. بعد از اجرا هم خطا رو چاپ کنید و وقتی مطمئن شدین خطایی نیست، دستورات چاپ کوئری و خطا رو حذف کنید.