summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sapi/servlet/cookies.php10
-rw-r--r--sapi/servlet/servlet.c42
-rw-r--r--sapi/servlet/servlet.java27
-rw-r--r--sapi/servlet/sessions.php6
4 files changed, 46 insertions, 39 deletions
diff --git a/sapi/servlet/cookies.php b/sapi/servlet/cookies.php
index e3e724a82e..21c765c8a8 100644
--- a/sapi/servlet/cookies.php
+++ b/sapi/servlet/cookies.php
@@ -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";
}
?>
diff --git a/sapi/servlet/servlet.c b/sapi/servlet/servlet.c
index abded32554..b37d8bce39 100644
--- a/sapi/servlet/servlet.c
+++ b/sapi/servlet/servlet.c
@@ -171,25 +171,29 @@ static void sapi_servlet_send_header(sapi_header_struct *sapi_header, void *serv
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;
-
- 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;
+ 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;
+ }
}
diff --git a/sapi/servlet/servlet.java b/sapi/servlet/servlet.java
index 97a71af71d..817957d622 100644
--- a/sapi/servlet/servlet.java
+++ b/sapi/servlet/servlet.java
@@ -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 @@ public class servlet extends HttpServlet {
/******************************************************************/
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() {
diff --git a/sapi/servlet/sessions.php b/sapi/servlet/sessions.php
index 9db04f7956..f4bbefbb02 100644
--- a/sapi/servlet/sessions.php
+++ b/sapi/servlet/sessions.php
@@ -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