cvs: /php4/sapi/servlet cookies.php servlet.c servlet.java sessions.php
| From: | Sam Ruby | Date: | Thu, 09 Mar 2000 13:07:54 +0000 |
| Subject: | cvs: /php4/sapi/servlet cookies.php servlet.c servlet.java sessions.php | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-11801@lists.php.net to get a copy of this message | ||
rubys Thu Mar 9 05:07:54 2000 EDT
Modified files:
/php4/sapi/servlet cookies.php servlet.c servlet.java sessions.php
Log:
Both PHP and Java can't read Post data - let java do it and reconstruct for
PHP.
Index: php4/sapi/servlet/cookies.php
diff -u php4/sapi/servlet/cookies.php:1.2 php4/sapi/servlet/cookies.php:1.3
--- php4/sapi/servlet/cookies.php:1.2 Mon Mar 6 05:19:57 2000
+++ php4/sapi/servlet/cookies.php Thu Mar 9 05:07:24 2000
@@ -16,19 +16,17 @@
} else {
echo "Your browser is sending the following cookies:<br>\n";
- for ($cookie=current($cookies); $cookie; $cookie=next($cookies)) {
+ while (list($i,$cookie) = each($cookies)) {
echo "Cookie Name: $cookie->name<br>Cookie value:
$cookie->value<br>\n";
}
}
// set a cookie
- $name = $request->getParameter("cookieName");
- if ($name) {
- $value = $request->getParameter("cookieValue");
- $response->addCookie(new Java("javax.servlet.http.Cookie", $name, $value));
+ if ($cookieName) {
+ $response->addCookie(new Java("javax.servlet.http.Cookie", $cookieName,
$cookieValue));
echo "<p>You just sent the following cookie to your browser:<br>\n";
- echo "Name: $name<br>Value: $value<P>\n";
+ echo "Name: $cookieName<br>Value: $cookieValue<P>\n";
}
?>
Index: php4/sapi/servlet/servlet.c
diff -u php4/sapi/servlet/servlet.c:1.22 php4/sapi/servlet/servlet.c:1.23
--- php4/sapi/servlet/servlet.c:1.22 Sun Mar 5 13:35:23 2000
+++ php4/sapi/servlet/servlet.c Thu Mar 9 05:07:24 2000
@@ -171,25 +171,29 @@
static int sapi_servlet_read_post(char *buffer, uint count_bytes SLS_DC)
{
- JNIEnv *jenv = ((servlet_request*)SG(server_context))->jenv;
- jobject servlet = ((servlet_request*)SG(server_context))->servlet;
+ if (count_bytes == 0) {
+ return 0;
+ } else {
+ JNIEnv *jenv = ((servlet_request*)SG(server_context))->jenv;
+ jobject servlet = ((servlet_request*)SG(server_context))->servlet;
- jclass servletClass = (*jenv)->GetObjectClass(jenv, servlet);
- jmethodID readPost = (*jenv)->GetMethodID(jenv, servletClass, "readPost",
- "(I)Ljava/lang/String;");
- jstring post = (*jenv)->CallObjectMethod(jenv, servlet, readPost,
- count_bytes);
-
- const char *postAsUTF = (*jenv)->GetStringUTFChars(jenv, post, 0);
- uint read_bytes=(*jenv)->GetStringLength(jenv, post);
- if (read_bytes>count_bytes) read_bytes=count_bytes;
-
- memcpy(buffer, postAsUTF, read_bytes);
- if (read_bytes<count_bytes) buffer[read_bytes]=0;
-
- (*jenv)->ReleaseStringUTFChars(jenv, post, postAsUTF);
-
- return read_bytes;
+ jclass servletClass = (*jenv)->GetObjectClass(jenv, servlet);
+ jmethodID readPost = (*jenv)->GetMethodID(jenv, servletClass,
+ "readPost", "(I)Ljava/lang/String;");
+ jstring post = (*jenv)->CallObjectMethod(jenv, servlet, readPost,
+ count_bytes);
+
+ const char *postAsUTF = (*jenv)->GetStringUTFChars(jenv, post, 0);
+ uint read_bytes=(*jenv)->GetStringLength(jenv, post);
+ if (read_bytes>count_bytes) read_bytes=count_bytes;
+
+ memcpy(buffer, postAsUTF, read_bytes);
+ if (read_bytes<count_bytes) buffer[read_bytes]=0;
+
+ (*jenv)->ReleaseStringUTFChars(jenv, post, postAsUTF);
+
+ return read_bytes;
+ }
}
Index: php4/sapi/servlet/servlet.java
diff -u php4/sapi/servlet/servlet.java:1.4 php4/sapi/servlet/servlet.java:1.5
--- php4/sapi/servlet/servlet.java:1.4 Sun Mar 5 13:35:23 2000
+++ php4/sapi/servlet/servlet.java Thu Mar 9 05:07:24 2000
@@ -19,6 +19,8 @@
package net.php;
import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.Enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
@@ -51,15 +53,22 @@
/******************************************************************/
String readPost(int bytes) {
- try {
- if (stream == null) stream=request.getInputStream();
- byte[] data = new byte[bytes];
- int len = stream.read(data, 0, bytes);
- if (len <= 0) return "";
- return new String(data, 0, len);
- } catch (IOException e) {
- return "";
- }
+ String result;
+ if (!request.getMethod().equals("POST")) {
+ result = request.getQueryString();
+ } else {
+ Enumeration e = request.getParameterNames();
+ result="";
+ String concat="";
+ while (e.hasMoreElements()) {
+ String name = (String)e.nextElement();
+ String value = request.getParameter(name);
+ result+=concat+name+"="+URLEncoder.encode(value);
+ concat="&";
+ }
+ }
+ if (result == null) return "";
+ return result;
}
String readCookies() {
Index: php4/sapi/servlet/sessions.php
diff -u php4/sapi/servlet/sessions.php:1.3 php4/sapi/servlet/sessions.php:1.4
--- php4/sapi/servlet/sessions.php:1.3 Wed Mar 8 20:04:04 2000
+++ php4/sapi/servlet/sessions.php Thu Mar 9 05:07:24 2000
@@ -19,11 +19,7 @@
// set session info if needed
- $dataName = $request->getParameter("dataName");
- if ($dataName) {
- $dataValue = $request->getParameter("dataValue");
- $session->setAttribute($dataName, $dataValue);
- }
+ if ($dataName) $session->setAttribute($dataName, $dataValue);
// print session contents