|
Author: Eric Higgins, Google Webmaster
Recommended experience: Beginner to intermediate PHP knowledge
PHP is a very popular scripting language, used on many popular sites across the web. In this article, we hope to help you to improve the performance of your PHP scripts with some changes that you can make very quickly and painlessly. Please keep in mind that your own performance gains may vary greatly, depending on which version of PHP you are running, your web server environment, and the complexity of your code.
|
|
|
|
|
Hello all,
Trying to get css working here...
Let's say I have a php file.
In that file I have something like:
if ($lang == "AAA"){
echo('<a href="'.$linkname.'" class="linkidiomaseleccionat">AAAA</a> | ');
}
else {
echo('<a href="'.$linkname.'" class="linkidioma">AAAA</a> | ');
}
Let's say the CSS file has this inside:
A.linkidiomaseleccionat, A.linkidiomaseleccionat:VISITED, A.linkidiomaseleccionat:ACTIVE, A.linkidiomaseleccionat:FOCUS, A.linkidiomaseleccionat:LINK{
color: #ff6d00;
text-decoration: none;
}
A.linkidiomaseleccionat:HOVER{
color: #ff6d00;
text-decoration: underline;
}
A.linkidioma, A.linkidioma:VISITED, A.linkidioma:ACTIVE, A.linkidioma:FOCUS, A.linkidioma:LINK{
color: #FFFFFF;
text-decoration: none;
}
A.linkidioma:HOVER{
color: #ff6d00;
text-decoration: underline;
}
A.linkNF, A.linkNF:VISITED, A.linkNF:ACTIVE, A.linkNF:FOCUS, A.linkNF:LINK{
color: #ff6d0N;
text-decoration: none;
}
A.linkNF:HOVER{
color: #ff6d0N;
text-decoration: underline;
}
A.linkNU, A.linkNU:VISITED, A.linkNU:ACTIVE, A.linkNU:FOCUS, A.linkNU:LINK{
color: #FFFFFF;
text-decoration: none;
}
A.linkNU:HOVER{
color: #ff6d0N;
text-decoration: underline;
}
Why on earth if I change the text that assigns the class to my links in the php file I don't get a good result if I'm not using "linkidiomaseleccionat" and "linkidioma"... I've tried to change the styule names to get something more consistent (bad initial design) and now I can't see it working if I change the name for it's counterparts: "linkNF" and "linkNU"...
Any of you could help me with that?
I'm feeling really bad here... I can't get it and I don't understand why changing only the name of the style class prevents it from working properly...
We... thank you in advance!
|
|
|
|
|
Hi Joan,
three comments:
1.
I don't really understand your question. It isn't clear to me what you want, what you get, and where they differ.
2.
you may suffer from cache effects; try CTRL/F5 to force the browser to reload the page and its dependencies (the CSS files).
3.
you probably could simplify by assigning more than one class to those anchor tags, as in:
echo('<a href="'.$linkname.'" class="linkidiomaseleccionat mySpecialColorScheme">AAAA</a> | ');
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Hello all again,
Given that code:
<div id="IndexHeader">
<?php
echo('<div id="logoIndex"><img src="'.$path_images.'/logo.png" alt="alt text"></div>');
include($path_base.'/menu_idioma.php');
?>
</div>
If I'm echoing the path, copying it to the clipboard and then paste it into the explorer address bar, it seems right enough in order to allow my windows system to load the right image...
So... any idea on why is this happening? I'm really confused... those things should be extremely easy and they don't seem so...
As always thank you in advance...
|
|
|
|
|
would the image show if you hadn't the include statement?
it smells like file-not-found, possibly caused by your earlier include-changes-directory issue.
ADDED: does any of your code contain chdir() ?
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
mmmm... strange...
If I look at the source code after the web page has been rendered I can see a perfect and correct path...
I've just put the two lines [echo + image] at the beggining of the index page with the same result.
No, I've not found one chdir in the entire site...
[here I'm crying/ranting]
Once again I'm calling (including) the web page from different sources and therefore the path from which it has been called changes and therefore the only way I've found to make everything work is to put complete paths to the files that I know where they are... Then putting "../" before one file is not enough and this is why I'm using this approach.
[just feeling a little bit better]
If I copy the path from the source code after the page has been rendered and then I paste the path into any explorer window the OS shows me the image correctly...
PS: Thank you very much for the patience...
|
|
|
|
|
I suggest you go to the bottom of this, it will haunt you forever if you don't.
I basically see two ways:
1.
install another PHP system and try your web site on it. I use XAMPP on my developing machines. Works great (PHP 5.2.5 + MySQL 5.0.51a)
2.
copy your entire web site and strip it down till you have the smallest one that exhibits the problem, then analyze closely.
Maybe first, if you haven't already, Google for known problems on your PHP system.
Good luck!
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
More info:
It does not fail to find the image (I believe) in fact, when an image is not found then a red cross appears.
In this case the red cross is not there as in the place it should be I can see a small white page in which inside there is a red round, a green triangle... It is an image that the OS uses in some cases...
I'm even more confused now...
|
|
|
|
|
this could mean there are two file operations, one succeeding and one failing; maybe the first checks for file existence, the second actually reads the file (I wouldn't do it like that!).
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Hello again:
If I try this:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<div><img src="c:/aaa.png"></div>
</body>
</html>
It fails exactly in the same way...
But in that case it is IE9 who fails... I've only navigated to test.html (which has that content inside) and the result is the same I was telling you...
What I'm doing wrong?
|
|
|
|
|
that looks like a security precaution. Normally a web site is supposed to refer to its own pages, not to the local file system.
And AFAIK XAMPP and other PHP systems also have such (optional?) precautions; mine is set to allow access only to files that are under the server's root.
So what should work is file mypage.html containing
<html>
<body>
<img src="aaa.png">
<img src="images/bbb.png">
</body>
</html>
when it is stored at the site's root, together with aaa.png, and bbb.png in the subdirectory images.
You wouldn't like a web server to give access to files outside its root, would you? The entire file system would be up for grabs.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Working! thank you very much!
|
|
|
|
|
you're welcome.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
AAAARGH!
Of course it has worked well from the files that are in the root directory:
- root
-- images
-- templates
How do you solve the fact that there are files that are not in the root folder?
In my case I have index.php as a file that is being used as a template from multiple languages... then it happesn that it is being called (included) from different folders. Once this happens... then problems start...
index.php is at the root folder and it can access without trouble the images that are inside the "images" folder.
but any of the files that is being used inside any of the other folders i.e. index.php (when it is included from another folder) then I would need to use "../images/file.png".
How could I get the root of the web page folder? and then use it in order to load images?
Thank you in advance!
|
|
|
|
|
First of all I try and avoid such situations.
When I can't, require_once("../includes/somefile.php"); works for me. But then I'm not sure what would happen if somefile.php would contain another include or require.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
If I make web site by ASP.net , is it give me the flexibly to make forums and Chat ,Profiles and so on
or PHP is the best?
|
|
|
|
|
m_7tem wrote: PHP is the best?
No, not in my books.
PHP may be the most popular approach, ASP.NET would be the professional approach.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
ASP.NET is better than PHP in my opinion...
|
|
|
|
|
While I would prefer ASP.Net, PHP has the advantage of being able to be hosted on Linux servers. This keeps running costs much lower than ASP.Net servers. Functionally they are pretty much the same, PHP has some funny syntax. ASP.Net has the advantage of being able to use C# as code behind, which would integrate better with desktop applications and WCF(web) services. The choice is ultimately just an arbitrary one, dependant on the developer.
|
|
|
|
|
Having recently moved a site from ASP to PHP I can tell you that ASP was 10x easier for me (but most of my exp until recently in programming has been VB, C#). I was able to get things working a lot faster in ASP and how I wanted them to. Off hand I can't really think of anything I have done in PHP that I thought, "God I'm sure glad I'm using PHP to do this, as it's so much easier".
The only up side is the use of a Linux server for PHP. I'm sure there are other pros and cons, but I work on a web site about 3 hours a month for a intranet site here at work and now just use PHP as I'm forced to (admin won't run IIS).
|
|
|
|
|
|
Hello all,
Here a novice trying to concatenate two strings without luck...
Note: The Document root is "www".
$PATH = $_SERVER['DOCUMENT_ROOT'].'/'; This works wonderfully as I can see "www/".
echo $PATH.'FILE.php'; This should show something like: "www/FILE.php"; but it shows "wwwFILE.php".
Why is this happening?
Any idea on what I'm doing that is not correct?
Thank you in advance.
|
|
|
|
|
|
First of all thank you for answering.
I know that I can put the / just before the file name.
The idea was to avoid that: there are thousands of places with the file name but only a few with the path.
I'd like to know why do this happens. I've not seen this behavior documented anywhere.
Thanks again.
|
|
|
|
|
Have you included ALL your code?
This seems impossible if there is no other code between the two lines.
|
|
|
|