Please Help: Posting and redirecting to another form.

G

Guest

I have posted a similar message in 2 other forums but got no response. I
have spent more hours than I can count researching this. Can anyone provide
some insight...?

Our ASP.Net application needs to transparently log a user on to a separate
secure web site (PHP - not controlled by us). We want to save the user the
step of typing in his username and password and having to press submit.

I could accomplish this by using the <form action="myform.php"
method="post"> but I would have to store the password in a hidden field that
could be easily viewed.

I thought I was on the right track with the below code... but I cannot
figure out how to actually redirect the user to the page that appears after
login. (Response.redirect only shows the login page again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form-urlencoded";

string body = "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter (request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
I have also tried code presented on this forum (below), but this only brings
the information into my page, it does not post the username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new System.Net.WebClient();
System.Collections.Specialized.NameValueCollection
System.Collections.Specialized.NameValueCollection myNameValueCollection =
new System.Collections.Specialized.NameValueCollection();

myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST", myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues (uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString(responseArray);
}

Any suggestions would be greatly appreciated!
 
E

Elton Wang

Hi Denise,

I suppose the key point is to put Response content from
php page (HttpWebResponse) into Response of your page
(this.Response)

You can try following code

//>>>>... how to do I send the user to the page that
follows...?

// Get stream of php page Response
System.IO.BinaryReader phpStream = new BinaryReader
(response.GetResponseStream());
// prepare an byte array for php page content
byte[] phpBytes = new bytes[phpStream.Length];
// get the content
phpStream.Read(phpBytes, 0, phpStream.Length);
phpStream.Close();
// clear current page
this.Response.Clear();
// write php page content to current page
this.Response.BinaryWrite(phpBytes);
// Sends all currently buffered output to the client,
stops execution of the page
this.Response.End();


HTH

Elton Wang
(e-mail address removed)

-----Original Message-----
I have posted a similar message in 2 other forums but got no response. I
have spent more hours than I can count researching this. Can anyone provide
some insight...?

Our ASP.Net application needs to transparently log a user on to a separate
secure web site (PHP - not controlled by us). We want to save the user the
step of typing in his username and password and having to press submit.

I could accomplish this by using the <form action="myform.php"
method="post"> but I would have to store the password in a hidden field that
could be easily viewed.

I thought I was on the right track with the below code... but I cannot
figure out how to actually redirect the user to the page that appears after
login. (Response.redirect only shows the login page again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form-urlencoded";

string body
= "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter (request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse) request.GetResponse(); follows...?

I have also tried code presented on this forum (below), but this only brings
the information into my page, it does not post the username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new System.Net.WebClient();
System.Collections.Specialized.NameValueCollection
System.Collections.Specialized.NameValueCollection myNameValueCollection =
new System.Collections.Specialized.NameValueCollection();

myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST", myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues (uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString(responseArray);
}

Any suggestions would be greatly appreciated!
.
 
G

Guest

Elton,

Thanks for your reply. I am trying to implement your suggestions, but I get
compile errors on "phpStream.Length", 'System.IO.BinaryReader' does not
contain a definition for 'Length'. I don't know enough about binary readers
to fix this. Do I need an interim step?

Denise




Elton Wang said:
Hi Denise,

I suppose the key point is to put Response content from
php page (HttpWebResponse) into Response of your page
(this.Response)

You can try following code

//>>>>... how to do I send the user to the page that
follows...?

// Get stream of php page Response
System.IO.BinaryReader phpStream = new BinaryReader
(response.GetResponseStream());
// prepare an byte array for php page content
byte[] phpBytes = new bytes[phpStream.Length];
// get the content
phpStream.Read(phpBytes, 0, phpStream.Length);
phpStream.Close();
// clear current page
this.Response.Clear();
// write php page content to current page
this.Response.BinaryWrite(phpBytes);
// Sends all currently buffered output to the client,
stops execution of the page
this.Response.End();


HTH

Elton Wang
(e-mail address removed)

-----Original Message-----
I have posted a similar message in 2 other forums but got no response. I
have spent more hours than I can count researching this. Can anyone provide
some insight...?

Our ASP.Net application needs to transparently log a user on to a separate
secure web site (PHP - not controlled by us). We want to save the user the
step of typing in his username and password and having to press submit.

I could accomplish this by using the <form action="myform.php"
method="post"> but I would have to store the password in a hidden field that
could be easily viewed.

I thought I was on the right track with the below code... but I cannot
figure out how to actually redirect the user to the page that appears after
login. (Response.redirect only shows the login page again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form-urlencoded";

string body
= "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter (request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
... how to do I send the user to the page that
follows...?

I have also tried code presented on this forum (below), but this only brings
the information into my page, it does not post the username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new System.Net.WebClient();
System.Collections.Specialized.NameValueCollection
System.Collections.Specialized.NameValueCollection myNameValueCollection =
new System.Collections.Specialized.NameValueCollection();

myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST", myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues (uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString(responseArray);
}

Any suggestions would be greatly appreciated!
.
 
E

Elton Wang

Hi Denise,

You can change BinaryReader to BufferedStream. The
BufferedStream class has Length property and can also
perform Read operation.

I am still thinking your goal. Actually my code only
present content that HttpWebRequest object gets from its
request page. Hence suppose your HttpWebRequest object
successfully log in request page, it doesn't redirect to
that page. Instead it shows contents of the page. It's not
what you exactly want.

Redirect direct from server (Response.Redirect(url))
doesn't help at all. Because it's Request object doesn't
provide actual content, such as userID, password,
although they are in Request object.

I was just wondering why don't you let user log in
directly to that site?

HTH

Elton
-----Original Message-----
Elton,

Thanks for your reply. I am trying to implement your suggestions, but I get
compile errors
on "phpStream.Length", 'System.IO.BinaryReader' does not
contain a definition for 'Length'. I don't know enough about binary readers
to fix this. Do I need an interim step?

Denise




Elton Wang said:
Hi Denise,

I suppose the key point is to put Response content from
php page (HttpWebResponse) into Response of your page
(this.Response)

You can try following code

//>>>>... how to do I send the user to the page that
follows...?

// Get stream of php page Response
System.IO.BinaryReader phpStream = new BinaryReader
(response.GetResponseStream());
// prepare an byte array for php page content
byte[] phpBytes = new bytes[phpStream.Length];
// get the content
phpStream.Read(phpBytes, 0, phpStream.Length);
phpStream.Close();
// clear current page
this.Response.Clear();
// write php page content to current page
this.Response.BinaryWrite(phpBytes);
// Sends all currently buffered output to the client,
stops execution of the page
this.Response.End();


HTH

Elton Wang
(e-mail address removed)

-----Original Message-----
I have posted a similar message in 2 other forums but
got
no response. I
have spent more hours than I can count researching
this.
Can anyone provide
some insight...?

Our ASP.Net application needs to transparently log a
user
on to a separate
secure web site (PHP - not controlled by us). We
want
to save the user the
step of typing in his username and password and having
to
press submit.
I could accomplish this by using the <form action="myform.php"
method="post"> but I would have to store the password
in
a hidden field that
could be easily viewed.

I thought I was on the right track with the below
code...
but I cannot
figure out how to actually redirect the user to the
page
that appears after
login. (Response.redirect only shows the login page again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form- urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE
6.0;
Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form- urlencoded";

string body
= "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter (request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
... how to do I send the user to the page that follows...?

I have also tried code presented on this forum
(below),
but this only brings
the information into my page, it does not post the username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new System.Net.WebClient();
System.Collections.Specialized.NameValueCollection
System.Collections.Specialized.NameValueCollection myNameValueCollection =
new System.Collections.Specialized.NameValueCollection ();

myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST", myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues (uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString(responseArray);
}

Any suggestions would be greatly appreciated!
.
.
 
G

Guest

It is a requirement of our application. When the user logs into the parent
site, the client wants their users to be able to access the affiliated site
without having to remember another login.. a convenience for their users. We
have access to all the information about their login.

On this project, I am the developer, not the designer. Someone sold this
idea to the client - I have to make it happen. Is there ANYTHING else you
can think of...???

Denise

Elton Wang said:
Hi Denise,

You can change BinaryReader to BufferedStream. The
BufferedStream class has Length property and can also
perform Read operation.

I am still thinking your goal. Actually my code only
present content that HttpWebRequest object gets from its
request page. Hence suppose your HttpWebRequest object
successfully log in request page, it doesn't redirect to
that page. Instead it shows contents of the page. It's not
what you exactly want.

Redirect direct from server (Response.Redirect(url))
doesn't help at all. Because it's Request object doesn't
provide actual content, such as userID, password,
although they are in Request object.

I was just wondering why don't you let user log in
directly to that site?

HTH

Elton
-----Original Message-----
Elton,

Thanks for your reply. I am trying to implement your suggestions, but I get
compile errors
on "phpStream.Length", 'System.IO.BinaryReader' does not
contain a definition for 'Length'. I don't know enough about binary readers
to fix this. Do I need an interim step?

Denise




Elton Wang said:
Hi Denise,

I suppose the key point is to put Response content from
php page (HttpWebResponse) into Response of your page
(this.Response)

You can try following code

//>>>>... how to do I send the user to the page that
follows...?

// Get stream of php page Response
System.IO.BinaryReader phpStream = new BinaryReader
(response.GetResponseStream());
// prepare an byte array for php page content
byte[] phpBytes = new bytes[phpStream.Length];
// get the content
phpStream.Read(phpBytes, 0, phpStream.Length);
phpStream.Close();
// clear current page
this.Response.Clear();
// write php page content to current page
this.Response.BinaryWrite(phpBytes);
// Sends all currently buffered output to the client,
stops execution of the page
this.Response.End();


HTH

Elton Wang
(e-mail address removed)


-----Original Message-----
I have posted a similar message in 2 other forums but got
no response. I
have spent more hours than I can count researching this.
Can anyone provide
some insight...?

Our ASP.Net application needs to transparently log a user
on to a separate
secure web site (PHP - not controlled by us). We want
to save the user the
step of typing in his username and password and having to
press submit.

I could accomplish this by using the <form
action="myform.php"
method="post"> but I would have to store the password in
a hidden field that
could be easily viewed.

I thought I was on the right track with the below code...
but I cannot
figure out how to actually redirect the user to the page
that appears after
login. (Response.redirect only shows the login page
again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form- urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form- urlencoded";

string body
= "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter
(request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
... how to do I send the user to the page that
follows...?

I have also tried code presented on this forum (below),
but this only brings
the information into my page, it does not post the
username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new
System.Net.WebClient();
System.Collections.Specialized.NameValueCollection
System.Collections.Specialized.NameValueCollection
myNameValueCollection =
new System.Collections.Specialized.NameValueCollection ();

myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST",
myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues
(uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString(responseArray);
}

Any suggestions would be greatly appreciated!
.
.
 
E

Elton Wang

So in your page, you only track user log info then
redirect to target page that's it. Or you need also to
track if log on successful or failure?

Elton

-----Original Message-----
It is a requirement of our application. When the user logs into the parent
site, the client wants their users to be able to access the affiliated site
without having to remember another login.. a convenience for their users. We
have access to all the information about their login.

On this project, I am the developer, not the designer. Someone sold this
idea to the client - I have to make it happen. Is there ANYTHING else you
can think of...???

Denise

Elton Wang said:
Hi Denise,

You can change BinaryReader to BufferedStream. The
BufferedStream class has Length property and can also
perform Read operation.

I am still thinking your goal. Actually my code only
present content that HttpWebRequest object gets from its
request page. Hence suppose your HttpWebRequest object
successfully log in request page, it doesn't redirect to
that page. Instead it shows contents of the page. It's not
what you exactly want.

Redirect direct from server (Response.Redirect(url))
doesn't help at all. Because it's Request object doesn't
provide actual content, such as userID, password,
although they are in Request object.

I was just wondering why don't you let user log in
directly to that site?

HTH

Elton
-----Original Message-----
Elton,

Thanks for your reply. I am trying to implement your suggestions, but I get
compile errors
on "phpStream.Length", 'System.IO.BinaryReader' does not
contain a definition for 'Length'. I don't know
enough
about binary readers
to fix this. Do I need an interim step?

Denise




:

Hi Denise,

I suppose the key point is to put Response content from
php page (HttpWebResponse) into Response of your page
(this.Response)

You can try following code

//>>>>... how to do I send the user to the page that
follows...?

// Get stream of php page Response
System.IO.BinaryReader phpStream = new BinaryReader
(response.GetResponseStream());
// prepare an byte array for php page content
byte[] phpBytes = new bytes[phpStream.Length];
// get the content
phpStream.Read(phpBytes, 0, phpStream.Length);
phpStream.Close();
// clear current page
this.Response.Clear();
// write php page content to current page
this.Response.BinaryWrite(phpBytes);
// Sends all currently buffered output to the client,
stops execution of the page
this.Response.End();


HTH

Elton Wang
(e-mail address removed)


-----Original Message-----
I have posted a similar message in 2 other forums
but
got
no response. I
have spent more hours than I can count researching this.
Can anyone provide
some insight...?

Our ASP.Net application needs to transparently log
a
user
on to a separate
secure web site (PHP - not controlled by us). We want
to save the user the
step of typing in his username and password and
having
to
press submit.

I could accomplish this by using the <form
action="myform.php"
method="post"> but I would have to store the
password
in
a hidden field that
could be easily viewed.

I thought I was on the right track with the below code...
but I cannot
figure out how to actually redirect the user to the page
that appears after
login. (Response.redirect only shows the login page
again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form- urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form- urlencoded";

string body
= "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter
(request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
... how to do I send the user to the page that
follows...?

I have also tried code presented on this forum (below),
but this only brings
the information into my page, it does not post the
username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new
System.Net.WebClient();
System.Collections.Specialized.NameValueCollection
System.Collections.Specialized.NameValueCollection
myNameValueCollection =
new
System.Collections.Specialized.NameValueCollection
();
myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST",
myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues
(uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString(responseArray);
}

Any suggestions would be greatly appreciated!
.


.
.
 
G

Guest

I would be happy just to redirect them. If I can determine if the logon was
sucessful, that would be great, but not absolutely necesssary.

Denise

Elton Wang said:
So in your page, you only track user log info then
redirect to target page that's it. Or you need also to
track if log on successful or failure?

Elton

-----Original Message-----
It is a requirement of our application. When the user logs into the parent
site, the client wants their users to be able to access the affiliated site
without having to remember another login.. a convenience for their users. We
have access to all the information about their login.

On this project, I am the developer, not the designer. Someone sold this
idea to the client - I have to make it happen. Is there ANYTHING else you
can think of...???

Denise

Elton Wang said:
Hi Denise,

You can change BinaryReader to BufferedStream. The
BufferedStream class has Length property and can also
perform Read operation.

I am still thinking your goal. Actually my code only
present content that HttpWebRequest object gets from its
request page. Hence suppose your HttpWebRequest object
successfully log in request page, it doesn't redirect to
that page. Instead it shows contents of the page. It's not
what you exactly want.

Redirect direct from server (Response.Redirect(url))
doesn't help at all. Because it's Request object doesn't
provide actual content, such as userID, password,
although they are in Request object.

I was just wondering why don't you let user log in
directly to that site?

HTH

Elton
-----Original Message-----
Elton,

Thanks for your reply. I am trying to implement your
suggestions, but I get
compile errors
on "phpStream.Length", 'System.IO.BinaryReader' does not
contain a definition for 'Length'. I don't know enough
about binary readers
to fix this. Do I need an interim step?

Denise




:

Hi Denise,

I suppose the key point is to put Response content from
php page (HttpWebResponse) into Response of your page
(this.Response)

You can try following code

//>>>>... how to do I send the user to the page that
follows...?

// Get stream of php page Response
System.IO.BinaryReader phpStream = new BinaryReader
(response.GetResponseStream());
// prepare an byte array for php page content
byte[] phpBytes = new bytes[phpStream.Length];
// get the content
phpStream.Read(phpBytes, 0, phpStream.Length);
phpStream.Close();
// clear current page
this.Response.Clear();
// write php page content to current page
this.Response.BinaryWrite(phpBytes);
// Sends all currently buffered output to the client,
stops execution of the page
this.Response.End();


HTH

Elton Wang
(e-mail address removed)


-----Original Message-----
I have posted a similar message in 2 other forums but
got
no response. I
have spent more hours than I can count researching
this.
Can anyone provide
some insight...?

Our ASP.Net application needs to transparently log a
user
on to a separate
secure web site (PHP - not controlled by us). We
want
to save the user the
step of typing in his username and password and having
to
press submit.

I could accomplish this by using the <form
action="myform.php"
method="post"> but I would have to store the password
in
a hidden field that
could be easily viewed.

I thought I was on the right track with the below
code...
but I cannot
figure out how to actually redirect the user to the
page
that appears after
login. (Response.redirect only shows the login page
again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-
urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE
6.0;
Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form-
urlencoded";

string body
= "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter
(request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
... how to do I send the user to the page that
follows...?

I have also tried code presented on this forum
(below),
but this only brings
the information into my page, it does not post the
username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new
System.Net.WebClient();
System.Collections.Specialized.NameValueCollection
System.Collections.Specialized.NameValueCollection
myNameValueCollection =
new System.Collections.Specialized.NameValueCollection
();

myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST",
myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues
(uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString(responseArray);
}

Any suggestions would be greatly appreciated!
.


.
.
 
E

Elton Wang

I have an idea. It lets page to rebound to client first.
Then on client-side, change the form's request URL to
target URL, and automatically submit. You can try this
idea by following method:

private void Rebound(string Url)
{
string txtPw = this.txtPw.Text;
string PWclientID = this.txtPw.ClientID;
string txtUser = this.txtUser.Text;
string UserclientID = this.txtUser.ClientID;
string scriptString = "<script
language=JavaScript> ";
scriptString += "var theform;";
scriptString += "if
(window.navigator.appName.toLowerCase().indexOf
(\"microsoft\") > -1) {";
scriptString += "theform = document.Form1;";
scriptString += "}else {";
scriptString += "theform = document.forms[\"Form1
\"];";
scriptString += "}theform.action =\"" + Url
+ "\";";
scriptString += "theform." + PWclientID
+ ".value='" + txtPw + "';";
scriptString += "theform." + UserclientID
+ ".value='" + txtUser + "';";
scriptString += "theform.submit();";
scriptString += "</script>";
RegisterStartupScript("clientScript",
scriptString);
}

HTH

Elton
-----Original Message-----
I would be happy just to redirect them. If I can determine if the logon was
sucessful, that would be great, but not absolutely necesssary.

Denise

Elton Wang said:
So in your page, you only track user log info then
redirect to target page that's it. Or you need also to
track if log on successful or failure?

Elton

-----Original Message-----
It is a requirement of our application. When the user logs into the parent
site, the client wants their users to be able to
access
the affiliated site
without having to remember another login.. a
convenience
for their users. We
have access to all the information about their login.

On this project, I am the developer, not the
designer.
Someone sold this
idea to the client - I have to make it happen. Is
there
ANYTHING else you
can think of...???

Denise

:

Hi Denise,

You can change BinaryReader to BufferedStream. The
BufferedStream class has Length property and can also
perform Read operation.

I am still thinking your goal. Actually my code only
present content that HttpWebRequest object gets from its
request page. Hence suppose your HttpWebRequest object
successfully log in request page, it doesn't
redirect
to
that page. Instead it shows contents of the page.
It's
not
what you exactly want.

Redirect direct from server (Response.Redirect(url))
doesn't help at all. Because it's Request object doesn't
provide actual content, such as userID, password,
although they are in Request object.

I was just wondering why don't you let user log in
directly to that site?

HTH

Elton
-----Original Message-----
Elton,

Thanks for your reply. I am trying to implement your
suggestions, but I get
compile errors
on "phpStream.Length", 'System.IO.BinaryReader'
does
not
contain a definition for 'Length'. I don't know enough
about binary readers
to fix this. Do I need an interim step?

Denise




:

Hi Denise,

I suppose the key point is to put Response
content
from
php page (HttpWebResponse) into Response of your page
(this.Response)

You can try following code

//>>>>... how to do I send the user to the page that
follows...?

// Get stream of php page Response
System.IO.BinaryReader phpStream = new BinaryReader
(response.GetResponseStream());
// prepare an byte array for php page content
byte[] phpBytes = new bytes[phpStream.Length];
// get the content
phpStream.Read(phpBytes, 0, phpStream.Length);
phpStream.Close();
// clear current page
this.Response.Clear();
// write php page content to current page
this.Response.BinaryWrite(phpBytes);
// Sends all currently buffered output to the client,
stops execution of the page
this.Response.End();


HTH

Elton Wang
(e-mail address removed)


-----Original Message-----
I have posted a similar message in 2 other
forums
but
got
no response. I
have spent more hours than I can count researching
this.
Can anyone provide
some insight...?

Our ASP.Net application needs to transparently
log
a
user
on to a separate
secure web site (PHP - not controlled by us). We
want
to save the user the
step of typing in his username and password and having
to
press submit.

I could accomplish this by using the <form
action="myform.php"
method="post"> but I would have to store the password
in
a hidden field that
could be easily viewed.

I thought I was on the right track with the below
code...
but I cannot
figure out how to actually redirect the user to the
page
that appears after
login. (Response.redirect only shows the login page
again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-
urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE
6.0;
Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form-
urlencoded";

string body
= "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter
(request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
... how to do I send the user to the page that
follows...?

I have also tried code presented on this forum
(below),
but this only brings
the information into my page, it does not post the
username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new
System.Net.WebClient();
System.Collections.Specialized.NameValueCollection
System.Collections.Specialized.NameValueCollection
myNameValueCollection =
new System.Collections.Specialized.NameValueCollection
();

myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add ("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST",
myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues
(uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString (responseArray);
}

Any suggestions would be greatly appreciated!
.


.


.
.
 
G

Guest

Elton,

I tried this solution and it does work. My only concern is that if a user
navigates back to this window and does a viewsource, the password will
be visible in the javascript code... but the page was dynamically created on
his machine so chances of security problems would be minimized.

I still wish I could get the redirect from the server side working after the
post ... but this may have to do. Thank so much for your great ideas.

Denise

Elton Wang said:
I have an idea. It lets page to rebound to client first.
Then on client-side, change the form's request URL to
target URL, and automatically submit. You can try this
idea by following method:

private void Rebound(string Url)
{
string txtPw = this.txtPw.Text;
string PWclientID = this.txtPw.ClientID;
string txtUser = this.txtUser.Text;
string UserclientID = this.txtUser.ClientID;
string scriptString = "<script
language=JavaScript> ";
scriptString += "var theform;";
scriptString += "if
(window.navigator.appName.toLowerCase().indexOf
(\"microsoft\") > -1) {";
scriptString += "theform = document.Form1;";
scriptString += "}else {";
scriptString += "theform = document.forms[\"Form1
\"];";
scriptString += "}theform.action =\"" + Url
+ "\";";
scriptString += "theform." + PWclientID
+ ".value='" + txtPw + "';";
scriptString += "theform." + UserclientID
+ ".value='" + txtUser + "';";
scriptString += "theform.submit();";
scriptString += "</script>";
RegisterStartupScript("clientScript",
scriptString);
}

HTH

Elton
-----Original Message-----
I would be happy just to redirect them. If I can determine if the logon was
sucessful, that would be great, but not absolutely necesssary.

Denise

Elton Wang said:
So in your page, you only track user log info then
redirect to target page that's it. Or you need also to
track if log on successful or failure?

Elton


-----Original Message-----
It is a requirement of our application. When the user
logs into the parent
site, the client wants their users to be able to access
the affiliated site
without having to remember another login.. a convenience
for their users. We
have access to all the information about their login.

On this project, I am the developer, not the designer.
Someone sold this
idea to the client - I have to make it happen. Is there
ANYTHING else you
can think of...???

Denise

:

Hi Denise,

You can change BinaryReader to BufferedStream. The
BufferedStream class has Length property and can also
perform Read operation.

I am still thinking your goal. Actually my code only
present content that HttpWebRequest object gets from
its
request page. Hence suppose your HttpWebRequest object
successfully log in request page, it doesn't redirect
to
that page. Instead it shows contents of the page. It's
not
what you exactly want.

Redirect direct from server (Response.Redirect(url))
doesn't help at all. Because it's Request object
doesn't
provide actual content, such as userID, password,
although they are in Request object.

I was just wondering why don't you let user log in
directly to that site?

HTH

Elton
-----Original Message-----
Elton,

Thanks for your reply. I am trying to implement your
suggestions, but I get
compile errors
on "phpStream.Length", 'System.IO.BinaryReader' does
not
contain a definition for 'Length'. I don't know
enough
about binary readers
to fix this. Do I need an interim step?

Denise




:

Hi Denise,

I suppose the key point is to put Response content
from
php page (HttpWebResponse) into Response of your
page
(this.Response)

You can try following code

//>>>>... how to do I send the user to the page that
follows...?

// Get stream of php page Response
System.IO.BinaryReader phpStream = new BinaryReader
(response.GetResponseStream());
// prepare an byte array for php page content
byte[] phpBytes = new bytes[phpStream.Length];
// get the content
phpStream.Read(phpBytes, 0, phpStream.Length);
phpStream.Close();
// clear current page
this.Response.Clear();
// write php page content to current page
this.Response.BinaryWrite(phpBytes);
// Sends all currently buffered output to the
client,
stops execution of the page
this.Response.End();


HTH

Elton Wang
(e-mail address removed)


-----Original Message-----
I have posted a similar message in 2 other forums
but
got
no response. I
have spent more hours than I can count researching
this.
Can anyone provide
some insight...?

Our ASP.Net application needs to transparently log
a
user
on to a separate
secure web site (PHP - not controlled by us). We
want
to save the user the
step of typing in his username and password and
having
to
press submit.

I could accomplish this by using the <form
action="myform.php"
method="post"> but I would have to store the
password
in
a hidden field that
could be easily viewed.

I thought I was on the right track with the below
code...
but I cannot
figure out how to actually redirect the user to the
page
that appears after
login. (Response.redirect only shows the login
page
again, even though I
just posted the login values.)

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://myServer/myPage.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-
urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE
6.0;
Windows NT 5.1)";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.ContentType ="application/x-www-form-
urlencoded";

string body
= "logOnUserName=mek&userPwd=mypass&Submit=submit";
byte[] bytes = Encoding.ASCII.GetBytes(body);
request.ContentLength = bytes.Length;

StreamWriter stOut = new StreamWriter
(request.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(body);
stOut.Close();
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
... how to do I send the user to the page that
follows...?

I have also tried code presented on this forum
(below),
but this only brings
the information into my page, it does not post the
username and password and
redirect:

private void DoPost()
{
String uriString ="https://myServer/myPage.php?";
System.Net.WebClient myWebClient = new
System.Net.WebClient();
System.Collections.Specialized.NameValueCollectionSystem.Collections.Specialized.NameValueCollection
myNameValueCollection =
new
System.Collections.Specialized.NameValueCollection
();

myNameValueCollection.Add("logOnUserName", "me");
myNameValueCollection.Add("userPwd", "mypass");
myNameValueCollection.Add ("OrganizationId", "1234");
myNameValueCollection.Add("Submit", "");

myWebClient.UploadValues (uriString, "POST",
myNameValueCollection)
Byte[] responseArray = myWebClient.UploadValues
(uriString, "POST",
myNameValueCollection);

Label1.Text = "Response received was : " +
System.Text.Encoding.ASCII.GetString (responseArray);
}

Any suggestions would be greatly appreciated!
.


.


.
.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,989
Messages
2,570,207
Members
46,783
Latest member
RickeyDort

Latest Threads

Top