diff options
| -rw-r--r-- | sapi/servlet/cookies.php | 10 | ||||
| -rw-r--r-- | sapi/servlet/servlet.c | 42 | ||||
| -rw-r--r-- | sapi/servlet/servlet.java | 27 | ||||
| -rw-r--r-- | sapi/servlet/sessions.php | 6 |
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 |
