Link to home
Start Free TrialLog in
Avatar of NeverEndingFlashStories
NeverEndingFlashStories

asked on

How do i read this image src link (php code)

Hi there,

I am trying to modify specific icons within a moodle template that i have recently purchased. However, when inspecting the icon, i get this image source instead :

src="http://mydomain.com/theme/image.php/lambda/page/1468608429/icon" class="iconlarge activityicon" role="presentation" id="yui_3_17_2_1_1470251148074_2050"

and

src="http://mydomain.com/theme/image.php/lambda/core/1468608429/f/sourcecode-24" class="iconlarge activityicon" role="presentation" id="yui_3_17_2_1_1470251148074_1581"

What html/php function is being used here? How is the src being used to go inside the image.php file? and what happens within this php file? Can someone give me a direction to go and research ?
The explanation of src attribute in w3schools does not cover this kind of usage.

Help - trying to make sense of this.
Avatar of Dave Baldwin
Dave Baldwin
Flag of United States of America image

'src' can be anything that returns the correct content.  They are may using 'image.php' to generate the 'icon' image.  If they are, that means it doesn't exist as an image until that page is called.
Avatar of NeverEndingFlashStories
NeverEndingFlashStories

ASKER

Thanks for the response. What confuses me is the lack of parameter being passed? and why wasn't this done in the css?

And what the purpose of the directory listing after the .php is for :

http://mydomain.com/theme/image.php/lambda/page/1468608429/icon

I am interested in duplicating this functionality, but i don't know where to start. Do you have a tutorial or material online you can point me to?
It can't be done in CSS because CSS can't generate an image.  '/lambda/page/1468608429/icon' probably tells 'image.php' what to generate.  There is not likely to be a tutorial for this since it is probably a custom function.  Unless you can find the code for 'image.php' and understand it, you probably aren't going to duplicate it.
ASKER CERTIFIED SOLUTION
Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Hi , Thanks for the responses.

@Dave : I apologize, i don't think i am very clear on what i am confused about. I am a beginner at webdesign, and I am interested in specific functions, methods, etc that I have not seen before being used in PHP or HTML, or CSS.
I wasn't looking for specifically tutorial or information on the particular image generation function, but more on what is actually happening.

I am probably confused on something really basic. Such as, why does this link work and not give a 404 error? I have never read anything anywhere in my short life of php that says I can tag additional forward slashes after .php

http://mydomain.com/theme/image.php/lambda/page/1468608429/icon

I am looking for more information on, "here is how and why you can have http://mydomain.com/blabla.txt/hello.doc/something.pdf/somethingelse/work

But i don't even know where to begin. Googling the question 'forward slash after .php' kind of comes with what you'd expect : a lot of confused search results.

@Ray it is indeed the former link. Thanks for the suggestion about .htaccess . If it is an .htaccess function , then it is out of my scope of php learning at this point (since its server related), so i can simply forget about it and move on. Unfortunately, it does not seem like it is an .htaccess file - i can't find any in the installation that i did not put myself.

This guy seemed to have a similar, but reversed problem : http://stackoverflow.com/questions/28138019/page-gets-a-trailing-forward-slash-after-php


On a related note, out of curiosity i just tried loading up

"domain.com/test.php/blablablabla"  and it loaded up something from test.php (incorrectly and incomplete) instead of the normal "NOT FOUND - 404"

So i guess it is very normal for a browser to ignore .php/something and simply maybe pass an argument to the page which is not a GET function or POST.
I am looking for a page info or tutorial or the php manual page similar to  http://php.net/manual/en/reserved.variables.get.php that basically explains this behavior, and why the developer of moodle used it instead of, GET, or POST. Is it more secure? is it a replacement for the deprecated GET? or is it an undocumented behaviour of PHP , and whatever trails behind the forward slash needs to be captured or the page loads halfway?
Hi Ray, yes it is.
I've contacted the developer, but apparently the image function is part of the moodle core.

I have found image.php online on github, its this one :

https://github.com/moodle/moodle/blob/master/theme/image.php

The if statement at the beginning of that code refers to the method  :
min_get_slash_argument() description

This is the actual code of that method :
http://xref-diff.mukudu-dev.net/moodle26/lib/configonlylib.php.source.html#l165

This is where i am now presently stuck. Not quite sure what the reference to IIS is. Do you have an insight on what this is doing ? Or which if statement is relevant to the purpose of deciphering a forward slash trailing after .php?
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Hi All,

I found the .htaccess on github. I can't find it on the server itself - though i can see hidden files.

From the .htaccess :
### Firstly, if you are using Apache 2, you need the following
### three lines to allow Apache to pass a PATH_INFO variable
### correctly for URLs like http://server/file.php/arg1/arg2

<IfDefine APACHE2>
    AcceptPathInfo on
</IfDefine>

Open in new window



And from php manual on pathinfo() :
http://php.net/manual/en/function.pathinfo.php

A generic explanation for PATH_INFO was then found here : http://stackoverflow.com/questions/2261951/what-exactly-is-path-info-in-php

Thanks for the suggestions, the clue indeed was inside .htaccess !
Thanks for persisting with my convoluted question!