• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در نمایش صفحه
#1
سلام خدمت دوستان و اساتید محترم من یه مشکلی برام پیش اومده تو صفحه اصلی سایت این کد ها رو قرار دادم :

کد پی‌اچ‌پی:
<?php
require("libs/Controller.php");
require(
"libs/view.php");
require(
"libs/Bootstrap.php");
$app = new Bootstrap();
?>
حالا یکی یکی کد های دیگه رو هم بهتون نشون میدم :

libs/Controller.php:
کد پی‌اچ‌پی:
<?php
class Controller
{
function 
__construct()
{
    
//echo "<br>Main Controller<br>";<br />
    
$this->view=new View();
}

}
?>

libs/view.php:

کد پی‌اچ‌پی:
<?php
class View
{
function 
__construct()
{
//echo "<br>we are in page View";
}
function 
Render($name)
{
require(
"Views/Header.php");
require(
"views/".$name.".php");
require(
"Views/Footer.php");
}
}

?>

libs/Bootstrap.php

کد پی‌اچ‌پی:
<?php
class Bootstrap{
    
        function 
__construct()
    {
        if(!isset(
$_GET['url']))
        {
            
$url 'index';
        }
        else
        {
            
$url $_GET['url'];
        }
        
        
$url explode('/'$url);
        
//print_r($url);
        
        
if(!file_exists("Controllers/".$url[0].".php"))
        {
            echo 
"Not Found Page";
        }else{
            
$file="Controllers/".$url[0].".php";
            require(
$file);
            
$controller=new $url[0]();
            }
        }
    }
?>

تو فولدر Controllers هم مثلا فکر کنید یه فایل هست به اسم

index.php که این کد ها توش هستش

کد پی‌اچ‌پی:
<?php
class Index extends Controller
{
function 
__construct()
{
    
parent::__construct();
    
//echo "<br>Page Index ";
    
$this->view->Render("Index/index");
}
}
?>
تا اینجا که مشخص شد من url و میگیرم بعد چک میکنم که صفحه ازش وجود داره یا نه بعد از طریق class همون صفحه نمایش میدم ... حالا مشکل کجا پیش میاد برای من مثلا اگه صفحه رو اینجوری باز کنم مشکلی ندارم :

[عکس: 1.jpg]

یا حتی اینجوری

[عکس: 2.jpg]

اما نمیدونم چرا به این شکل که باز میکنم ایراد دارم :

[عکس: 3.jpg]

لطف کنید یه راهنمایی بکنید ممنونم .

و این رو هم بگم که در دو حالت اول که خوب نمایش داده میشه آدرس عکس های مثلا اینجوریه :

http://localhost/KCMOS/images/p12.jpg

اما در حالت آخر اینجوری :

http://localhost/KCMOS/index/images/m1-1.gif

این برای صفحه index بود مثلا اگه about us رو بزنم اینجوری میشه :

http://localhost/KCMOS/about/images/m1-1.gif

و باز نمایش نمیده ...

ممنون
  پاسخ
تشکر شده توسط :
#2
سلام،
آدرس‌دهی فایل‌هات رو هم بزار ببینیم.
مثلا یکی از عکس‌ها و فایل سی‌اس‌اس رو.
مشکل از کنترلر و ویو نیست، چون درخواست رو درست اجرا میکنه.
غایب
  پاسخ
تشکر شده توسط :
#3
مثلا این آدرس دهی صفحه index هستش :

<img title="About Me" alt="About Me" height="208" src="images/aboutmemain.jpg" style="Border-radius:10px;margin-top:5px;" width="324">

این تمام فایل CSS :

کد:
body {padding:0; margin:0; background-color:#585858}
body, td, input, textarea{
    font-size:12px;
    font-family:Tahoma;
    color:#A1A1A1;
    line-height:15px;
    vertical-align:top;
    padding:0px;
}

br{font-size:10px}
table{border:0px; border-collapse:collapse;    }

a{color:#BDBDBD; text-decoration:underline}
a:hover{text-decoration:none}

b{ color:#BDBDBD}
.set2 td{ vertical-align:middle}
.a{ color:#BDBDBD; font-size:12px}
.a1{ color:#BDBDBD; font-size:13px}
.a2{ color:#A1A1A1; font-size:11px}
.w{ color:#BDBDBD; font-size:13px; line-height:15px}
.g{ color:#C6E144; font-size:11px}
.a3{ color:#DBDBDB; font-size:11px}
.a4{ color:#DBDBDB; font-size:12px}

ul{margin:0; padding:0; list-style:none; line-height:17px}
li{background:url(images/1_z2.gif)  center left no-repeat; margin:0px; padding-left:8px }
li a{color:#DBDBDB;}

.more{background:url(images/1_z1.gif)  center right no-repeat; padding-right:8px; padding-bottom:3px; color:#EDEDED; font-weight:bold; text-decoration:none}
.more:hover{text-decoration:underline}

.footer td{color:#A1A1A1;}
.footer a {color:#A1A1A1; }

.set td{ color:#DBDBDB}
.set { color:#DBDBDB}
.set a{ color:#DBDBDB}

input{
   background:#3B3B3B;
   border:1px solid #A1A1A1;
   padding-left:5px;
   width:203px; height:21px;
}
textarea{
   background:#3B3B3B;
   border:1px solid #A1A1A1;
   padding-left:5px;
   width:203px; height:118px;
   overflow:auto}
  
#input1{
   background:#FFFFFF;
   border:1px solid #CAD3D8;
   padding-left:8px;
   width:125px; height:16px;
   color:#748184;
   vertical-align:middle;
   font-size:10px; margin-right:5px
}
#input2{
   border:0px;
   padding-left:0px;
   width:61px; height:16px;
   vertical-align:middle
}
#input3{
   padding-left:0px;
   width:49px; height:17px;
   border:0px;
   margin-left:4px
}
#input4{
   padding-left:0px;
   width:60px; height:17px;
   border:0px;
   margin-left:11px
}

و اینکه برای من جالب چرا وقتی / رو میگذارم این اتفاق میفته ببین مثلا :
این کار میکنه:
localhost/KCMOS/index
یا
index.php
اما :
/localhost/KCMOS/index
این کار نمیکنه بعد این index صفحه ای است که در view وجود داره و اینکه class هم براش وجود داره هر صفحه ای با این خصوصیات مثل about که هم کلاس هم صفحش وجود داره تا قبل از / نمایش خوبی داره اما وقتی / رو بهش اضافه میکنم تو خروجی عکس ها نمیاد و جالب برام اینه که مثلا به آدرس عکس زیر:
<img title="About Me" alt="About Me" height="208" src="images/aboutmemain.jpg" style="Border-radius:10px;margin-top:5px;" width="324">

میاد یه index یا about بسته به اون چیزی که خواستم ببینم اضافه میکنه :
http://localhost/KCMOS/index/images/m1-1.gif

و اینجوری میشه ...

وقتی هم که اینجوری آدرس دهی کنم هیچ مشکلی ندارم :

http://kcmos.com/images/test.jpg

و یه چیز دیگه وقتی رو صفحه view source رو میزنم آدرس دهی رو بهم درست نشون میده اما وقتی رو خود عکسی که باز نشده و روش علامت ضرب در وجود داره کلیک راست میکنم و آدرس رو میخوام ببینم کجاست اونجا به من
http://localhost/KCMOS/index/images/m1-1.gif
یه آدرس مثل بالا رو نشون میده که ایندکس بهش اضافه شده ... نمیدونم چرا
  پاسخ
تشکر شده توسط :
#4
سلام مجدد،
خب این اتفاق طبیعی هست، آدرس‌دهی نسبی داری میکنی. واسه همین تو هر آدرس عوض میشه.
باید مطلق آدرس‌دهی کنی. مثل همون که خودت نوشتی: http://kcmos.com/images/test.jpg
غایب
  پاسخ
تشکر شده توسط : kiarash_kcm
#5
احتمال داره مشکل از فایل .htaccess باشه ؟
محتویات اون فایل رو هم اینجا براتون میگذارم :
کد:
Options +FollowSymlinks
RewriteEngine on

Options -indexes

ErrorDocument 401 http://localhost/MVC/Test/
ErrorDocument 403 http://localhost/MVC/Test/
ErrorDocument 404 http://localhost/MVC/Test/
ErrorDocument 500 http://localhost/MVC/Test/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
  پاسخ
تشکر شده توسط :
#6
نقل قول:احتمال داره مشکل از فایل .htaccess باشه ؟

از نظر من که این رفتار طبیعی هست.
کلا مشکلی نیست. آدرس رو باید کامل بنویسین. حداقل که من همیشه کامل می‌نویسم Big Grin
غایب
  پاسخ
تشکر شده توسط :
#7
(۱۳۹۵ اردیبهشت ۲۸, ۰۱:۲۷ ق.ظ)Alaa نوشته:
نقل قول:احتمال داره مشکل از فایل .htaccess باشه ؟

از نظر من که این رفتار طبیعی هست.
کلا مشکلی نیست. آدرس رو باید کامل بنویسین. حداقل که من همیشه کامل می‌نویسم Big Grin


سلام

ممنونم والا آدرس دهی رو مطلق دادم و درست شد یعنی از اولم درست بود با این مدل آدرس دهی ... اما اونجوری خیلی برام جالب بود که چرا کار نمیکنه ... حالا من مطلق آدرس دهی کردم و مشکلم حل شد ممنون از کمکت و جواب دادنت ممنونم .
  پاسخ
تشکر شده توسط : Alaa


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان