Hi, please i'm new to perl cgi programming, i'll appreciate text recommendations.
2. I'm trying to write a perl-cgi web page that displays some images. I'm still starting with one, but the book i'm using doesn't really tak about this, but i came up with this code after some findings.
here is the code
#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;
OK. I think you just need to separate separate things.
1) Displaying images is a matter of HTML. There's no reason to involve Perl or any kind of scripting. So just go ahead and experiment with displaying images in HTML. When you have a working static webpage with images in it, you can write a simple Perl script that will just print the same HTML and the result should remain the same. Then you can start playing around with displaying different images based on whatever.
2) 127.0.0.1 is the localhost address. For your computer, it is your computer. For my computer, it is my computer, not yours. So I cannot see your webpage on the address http://127.0.0.1/cgi-bin/image.cgi even if you can.
3) You have placed your image to the cgi-bin directory. That's a bad idea. cgi-bin is for scripts. Place your image some place else and it may start working.
I would recommend getting yourself acquainted with the basics of how web works before you dive into CGI programming. Otherwise you risk a lot of unnecessary confusion, frustration and losing a lot of time.
You're using the wrong MIME-type header for an HTML document. You aren't sending an image to the user, you're sending an HTML document. Try:
Code:
#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;
print header('text/html'); # Sends Content-type: text/html;
print start_html("Images"),
"Hello i'm working",
"<center><img src= \"http://127.0.0.1/cgi-bin/images/test.jpg\" ></img></center>",
end_html;
exit ;
Your code relies on a lot of functions built into the CGI.pm module for creating the essential components of an HTML document. While it does make it easy and you can control all of the elements, the code can get a bit complex when you want to create a working page with a lot of tags in the <head> section. So, you might consider creating those elements yourself in your scripts in the future.
Sixtease was also correct that the http://127.0.0.1/ will only work on your local computer (assuming you have installed Apache and Perl on your own system). So remember to change the <img> tag if you put this script online.
Thanks for the replies,
I've tried creating an html page that calls the cgi file but its still not working.
this time the cgi is meant to display 2 images randomly.
I've been able to create an html page that displays images normally but just left with being able to call a cgi script from the html code.
The url is that cos i'm just practicing on my own, so i'm using my system as the server.
Here is the code
<html>
<head>
<title>Trying</title>
</head>
<body>
This is just a trial
<!--#exec cgi="/cgi-bin/img.cgi"-->
</body>
</html>
instead of the exec cgi i also tried <A HREF ="http://127.0.0.1//cgi-bin/img.cgi"></A>.
If you're going to try server directives like <!--#exec -->, be sure to use the .shtml extension in your filename so that Apache will parse it properly.
If you use <!--#exec -->, the output of your script will be embedded in the original page. When you use an <a>nchor tag and link to the script, it will be like any other link and show the output of the script as a new page. It's up to you as to which one is appropriate, but the link would work best with the kind of script you posted because it's designed to output a complete HTML document.
Bookmarks