How i include /master/header.php in /about/index.php?
localhost:8888/about/index.php:
<?php
include '/master/header.php';
?>
<?php
include '../master/header.php';
?>
Two dots mean back to main folder
Or:
include($_SERVER["DOCUMENT_ROOT"] . '/master/header.php');
Related
Here is what I have so far
file_put_contents('./'. $dir .'/'. file .'.php','<?php include "../head.php"; echo $head; ?>' . $body);
I also tried
file_put_contents('./'. $dir .'/'. file .'.php','<?php include "../head.php"; ?>' . $body);
and then echo $head; in the /head.php
I want a head.php that is called by each of the generated files. There for I need to insert the php code <?php include "../head.php"; ?> on top of the files.
with the given code <?php include "../head.php"; ?> it shows  on top.
head.php
echo '<html>...';
echo $_SERVER['REQUEST_URI'];
...
The issue is, it shows .
I don't think this is a dupe.
i am using this code
<?php $_SERVER['SERVER_ADDR'].$_SERVER['PHP_SELF'];?>
this will give me http://209.84.172.15/New/index and i want this http://202.54.151.15/New
<?php echo 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); ?>
try this
<?php "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>
Ok so I am making a website on each page where I want to include a file sidebar.php .
In sidebar.php I would like to echo the name of file that included sidebar.php .
Below are contents of sidebar.php, they return 'sidebar'.
<?php
$file = basename(__FILE__, '.php');
echo $file;
;?>
I found a similar question but the whole point is that I don't have to make no variables in on each page.
Excuse me for vague use of word 'include', I am using the it as the statement in php.
You could pass it to the sidebar page through a session variable:
<?php
session_start();
$_SESSION['filename'] = "thisFilesName.php";
include('../sidebar.php');
?>
sidebar.php:
<?php
session_start();
echo $_SESSION['filename'];
?>
My hostname is
http://gvidas.lhosting.info
Inside HEAD I have
<?php include("http://gvidas.lhosting.info/includes/header.php"); ?>
Physical location of that file is in /htdocs/includes/header.php
Why doesn't it work? Should I use relative paths?
Fragment of index.php
root/htdocs/index.php:
<!DOCTYPE HTML>
<HTML>
<HEAD>
<?php include("includes/header.php"); ?>
<?php if (isset($_SESSION["admin_id"])) { redirect("managePage.php"); } ?>
<?php $permision = "public"; ?>
</HEAD>
<BODY>
<...>
</BODY>
</HTML>
Fragment of header.php
root/htdocs/includes/header.php:
<?php require_once ("../includes/session.php"); ?>
<?php require_once ("../includes/functions.php"); ?>
<?php $db = mysqli_connect('http://gvidas.lhosting.info/', 'user', 'pass', 'beta');
if(mysqli_connect_errno()) { die("Database connection failed: " .
mysqli_connect_error() . " (" . mysqli_connect_errno() . ")");
}
?>
I now think I should use
<?php require_once ("session.php"); ?>
innstead of
<?php require_once ("../includes/session.php"); ?>
Any thoughts?
Most live servers won't allow absolute including. You can update the code as follows:
<?php include("includes/header.php"); ?>
The relative path will depend where you're including the file from. The above example assumes that the file in which this include() function is called from a file inside the web root.
You should use physical location rather than URI.
<?php include("/htdocs/includes/header.php"); ?>
You can't use a internet address as path for includes/requires, use a physical path instead, like /htdocs/includes/header.php.
try this code
$path = $_SERVER['HTTP_HOST'] . $_SERVER['SERVER_NAME'];
<?php include("$path/includes/header.php"); ?>
My current project routes everything through index.php. Then I see what the $_SERVER['REQUEST_URI'] is, check against a whitelist, then perform some logic to include the relevant html template. Like this:
<?php
include("header.html");
$requested_page = $_SERVER['REQUEST_URI'];
if ($requested_page in $whitelist){
$page_title = $requested_page;
include ($requested_page . "_controller.php");
include ($requested_page . "_template.html");
}
include ("footer.html")
?>
My problem is that I want to use $page_title in the header template, like this...
<title><?php echo $page_title?></title>
But obviously it will not work because when the header is included, $page_title has not been set. Can anyone suggest how to get around this? Might "output buffering" help? If so, how?
If there is something majorly wrong with this way of using php to produce pages, please say so ! Thanks
EDIT: I should add, the conditional logic is quite a bit more complicated in my real project, and I've simplified it a lot here. I don't want to have to keep repeating my includes of header and footer, so that's why they're not included. I'd really rather keep them out of all the logic if possible.
You can reorder your code to achieve this:
<?php
$requested_page = $_SERVER['REQUEST_URI'];
if ($requested_page in $whitelist){
$page_title = $requested_page;
include("header.html");
include ($requested_page . "_controller.php");
include ($requested_page . "_template.html");
}else{
//Make sure we include header if page not in white list
include("header.html");
}
include ("footer.html")
?>
Edit: Actually thinking about it you could probably decouple the logic and the includes:
<?php
$requested_page = $_SERVER['REQUEST_URI'];
$includes = array();
$includes[] = 'header.html';
if ($requested_page in $whitelist){
$page_title = $requested_page;
$includes[] = $requested_page . "_controller.php";
$includes[] = $requested_page . "_template.html";
}
$includes[] = "footer.html";
foreach($includes as $include){
include($include);
}
?>
I wrote this for my load MVC library to load views, but I think this will become handy:
$target = "myfile.php";
$data = array(
'page_title' => 'page title'
);
ob_start();
if(count($data) > 0) extract($data);
include_once($target);
$content = ob_get_clean();
echo $content;
And you're able to use $data keys as variables with use of extract() function.
Easy
<?php
$requested_page = $_SERVER['REQUEST_URI'];
$page_title = "";
if ($requested_page in $whitelist) $page_title = $requested_page;
include("header.html");
if(!empty($page_title)) {
include ($requested_page . "_controller.php");
include ($requested_page . "_template.html");
}
include ("footer.html")
?>
What about..?
<?php
$page_title = $requested_page = $_SERVER['REQUEST_URI'];
if (!in_array($requested_page, $whitelist)) {
header('Location: http://example.com/your404');
exit(0);
}
include 'header.html';
include "$requested_page_controller.php";
include "$requested_page_template.html";
include 'footer.html';
Try redirecting back to your index.php page with a $_POST or $_GET, with the page title.
If these are set, you can read them from the start of the page.
<?php
if (isset($_GET['pagetitle'])){
echo "<html><head><title>".$_GET['pagetitle']."</title></head>";
}
include("header.html");
$requested_page = $_SERVER['REQUEST_URI'];
if ($requested_page in $whitelist){
$page_title = $requested_page;
include ($requested_page . "_controller.php");
include ($requested_page . "_template.html");
header( 'Location: http://www.yoursite.com/index.php?pagetitle='.
urlencode('This is the page title'),'"' )
}
include ("footer.html")
?>