?
Solved

current path with stdout (or remove the result page)

Posted on 1997-12-18
10
Medium Priority
?
229 Views
Last Modified: 2013-12-25
I'm posting a form with target="_self" in the html code
(action= "...." target="_self")
I have a cgi which is sending back some data to stdout,
mainly an html page. The problem is that this page is a
predefined page that is using images from the server's
hard drive, and my default directory for the data which is
sent back is cgi-bin rather than the directory from which the post was done. My adress line in the browser gives:
http:...../cgi-bin/question.htm when the data is sent back
rather than the one from which question.htm was read, so the
images can't be found. Is there a way to change this (my cgi
is in "c") or either a way to eliminate the need to send back some data or open a new window once a cgi is executed?
If I'm not sending back something on stdout the IIS server is giving me an error, but all I want is to stay on the same
page after a post, without an intermediate screen with an hyperlink..

0
Comment
Question by:jfbeaulieu
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
  • +1
10 Comments
 
LVL 1

Expert Comment

by:rets
ID: 1831690
Per O'Reilly's Webmsater in a Nutshell 14.3 Results Processing

The server recognizes to following header lines in the results data stream:

Content-type:

 ...

URI: <value> (value enclosed in angle brackets)

     The value is either a full URL or a local file reference, either of which points to an object to be returned to the client in lieu of the body. If the value is a local file, the server sends it as the results of the request, as though the client issued a GET for that object. If the value is a full URL, the server returns a "401 redirect" to the client to retrieve the specified object directly.

Location:

 ...

So.  If you can have the CGI print out the following before anything else, you will reload the page you started at:

URI: <http://www.myserver.com/myform.html>


0
 
LVL 6

Expert Comment

by:alamo
ID: 1831691
I hate forms which give you very little indication they have succeeded... I would have suggested instead that you fix the page your CGI puts out, either by inserting a <BASE HREF> tag so the images work, or by using a Location: header (which seems pretty much the same as the URI header, I've never heard of the URI header - is it general or for O'Reilly's server only?)
0
 
LVL 1

Expert Comment

by:rets
ID: 1831692
Above post completed...


Location:
    Same as URI, but this form is now deprecated.  The value
    must not be enclosed in abngle brackets with this
    form.

So, URI _is_ the same as Location.  
-K
0
Stack Overflow Podcast - Developer Story

Welcome to the Stack Overflow podcast recorded Thursday July 20 at Stack Overflow Headquearters in NYC. Your hosts today are podcast regulars Jay Hanlon, David Fullerton, and Ilana Yitzhaki, plus the quite irregular Matt Sherman (Stack Overflow Engineering Manager extraordinaire)

 
LVL 6

Expert Comment

by:alamo
ID: 1831693
Thanks, rets.
0
 

Author Comment

by:jfbeaulieu
ID: 1831694
I'm sorry, but it doesn't seems to work. I've try the following
lines in my cgi:

          fprintf(stdout,"Content-type: text/html\n");

          fprintf(stdout,"Status:200 OK\n");
          fprintf(stdout,"\n");
          fprintf(stdout, "URI:<http://Plaisirdelire.sympatico.ca/index.htm>");      

  and also with URL rather than URI, it doesn't seems to open  the page but it is just displaying on the left top:
URI and the remaining of the page is blank
 

0
 
LVL 1

Expert Comment

by:rets
ID: 1831695
No Content-type:  the FIRST thing out must be

URI: <http://www.myserver.com/myform.html>

So, you should have your CGI say:

fprintf(stdout, "URI: <http://www.myserver.com/myform.html>\n\n");

and forget anything else that prints (because the user will be sent to http://www.myserver.com/myform.html.

Let me know if you've any more questions (I get notified on updates.)
0
 

Author Comment

by:jfbeaulieu
ID: 1831696
Hi,
 
>No Content-type: the FIRST thing out must be

>URI: <http://www.myserver.com/myform.html

>So, you should have your CGI say:

>fprintf(stdout, "URI: <http://www.myserver.com/myform.html>>
\n\n");

  I did it and there's some progress: when I test it locally
 with IIS and my own computer's adress there is a blank page
 because the adress which is display in the upper field is:

http://192.168.0.33/plaisirdelire/cgi-in/<..../question/ques.htm>

rather than
the value between <.../question/ques.htm>
there seems to be a concatenation here, my form which is calling
the cgi has a 'target="_top"' or either target="_self" after
the verb "ACTION=..."

I called the cgi with http://192.168.0.33/ question.htm
which contain the form...
Any idea?

0
 
LVL 1

Expert Comment

by:rets
ID: 1831697
If you would like the user to end up at:

http://192.168.0.33/question.htm

then you should say:

printf(stdout, "URI: <http://192.168.0.33/question.htm>\n\n");

What did the last revision of your code look like?  As an aside, you may wish to try

printf(stdout, "Location: http://192.168.0.33/question.htm\n\n");
as alamo suggested.  Perhaps IIS doesn't like URI.

-K
0
 
LVL 1

Accepted Solution

by:
nanullnet earned 320 total points
ID: 1831698
If this page that you are redirecting to is the same page as you started from, why reload it?  Just tell it there is no more content by typing:

printf(stdout, "HTTP/1.0 204 Nothing New to Display\n\n");
0
 

Author Comment

by:jfbeaulieu
ID: 1831699
thanks to all of them, I had to postpone my tests since my my Hard drive was crashed but it works well
0

Featured Post

Setting up LaraDock for Laravel

Learn how to set up LaraDock in a Laravel project - LaraDock gives us an easy way to run a Laravel application using Docker in a single command.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you get a (Blue Screen of Death), your system writes a small file called a minidump. Your first step is to make certain your computer is setup to record memory dumps. Right click My Computer, choose properties. Click on the advanced tab, an…
In this tutorial I will show you how to make a simple HTML bar chart with the usage of WhizBase, If you want more information about WhizBase please read my previous articles at http://www.experts-exchange.com/ARTH_5123186.html (http://www.experts-ex…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to count occurrences of each item in an array.
Suggested Courses

718 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question