| modification, are permitted provided that the conditions mentioned |
| in the accompanying LICENSE file are met. |
+--------------------------------------------------------------------+
- | Copyright (c) 2004-2005, Michael Wallner <mike@php.net> |
+ | Copyright (c) 2004-2006, Michael Wallner <mike@php.net> |
+--------------------------------------------------------------------+
*/
#include "ext/standard/php_string.h"
#include "zend_operators.h"
-#if defined(HAVE_PHP_SESSION) && !defined(COMPILE_DL_SESSION)
+#ifdef HAVE_PHP_SESSION
# include "ext/session/php_session.h"
#endif
}
/* }}} */
-/* {{{ proto string http_build_url(mixed url[, mixed parts[, array new_url]])
+/* {{{ proto string http_build_url(mixed url[, mixed parts[, array &new_url]])
*
* Returns the new URL as string on success or FALSE on failure.
*/
} else {
convert_to_string(z_new_url);
if (!(new_url = php_url_parse_ex(Z_STRVAL_P(z_new_url), Z_STRLEN_P(z_new_url)))) {
+ http_error_ex(HE_WARNING, HTTP_E_URL, "Could not parse URL (%s)", Z_STRVAL_P(z_new_url));
RETURN_FALSE;
}
}
if (new_url) {
php_url_free(new_url);
}
+ http_error_ex(HE_WARNING, HTTP_E_URL, "Could not parse URL (%s)", Z_STRVAL_P(z_old_url));
RETURN_FALSE;
}
}
* Provides a basic throttling mechanism, which will yield the current process
* resp. thread until the entity has been completely sent, though.
*
- * Note: This doesn't really work with the FastCGI SAPI.
- *
* Expects a double parameter specifying the seconds too sleep() after
* each chunk sent. Additionally accepts an optional int parameter
* representing the chunk size in bytes.
*
* Redirect to the given url.
*
- * The supplied url will be expanded with http_build_uri(), the params array will
+ * The supplied url will be expanded with http_build_url(), the params array will
* be treated with http_build_query() and the session identification will be appended
* if session is true.
*
* Please see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3
* for which redirect response code to use in which situation.
*
- * To be RFC compliant, "Redirecting to <a>URI</a>." will be displayed,
+ * To be RFC compliant, "Redirecting to <a>URL</a>." will be displayed,
* if the client doesn't redirect immediatly, and the request method was
* another one than HEAD.
*
RETURN_FALSE;
}
+#ifdef HAVE_PHP_SESSION
/* append session info */
if (session) {
if (!params) {
MAKE_STD_ZVAL(params);
array_init(params);
}
-#ifdef HAVE_PHP_SESSION
-# ifdef COMPILE_DL_SESSION
- if (SUCCESS == zend_get_module_started("session")) {
- zval nm_retval, id_retval, func;
-
- INIT_PZVAL(&func);
- INIT_PZVAL(&nm_retval);
- INIT_PZVAL(&id_retval);
- ZVAL_NULL(&nm_retval);
- ZVAL_NULL(&id_retval);
-
- ZVAL_STRINGL(&func, "session_id", lenof("session_id"), 0);
- call_user_function(EG(function_table), NULL, &func, &id_retval, 0, NULL TSRMLS_CC);
- ZVAL_STRINGL(&func, "session_name", lenof("session_name"), 0);
- call_user_function(EG(function_table), NULL, &func, &nm_retval, 0, NULL TSRMLS_CC);
-
- if ( Z_TYPE(nm_retval) == IS_STRING && Z_STRLEN(nm_retval) &&
- Z_TYPE(id_retval) == IS_STRING && Z_STRLEN(id_retval)) {
- if (add_assoc_stringl_ex(params, Z_STRVAL(nm_retval), Z_STRLEN(nm_retval)+1,
- Z_STRVAL(id_retval), Z_STRLEN(id_retval), 0) != SUCCESS) {
- http_error(HE_WARNING, HTTP_E_RUNTIME, "Could not append session information");
- }
- }
- }
-# else
if (PS(session_status) == php_session_active) {
if (add_assoc_string(params, PS(session_name), PS(id), 1) != SUCCESS) {
http_error(HE_WARNING, HTTP_E_RUNTIME, "Could not append session information");
}
}
-# endif
-#endif
}
+#endif
/* treat params array with http_build_query() */
if (params) {
if (query_len) {
spprintf(&LOC, 0, "Location: %s?%s", URI, query);
- if (SG(request_info).request_method && strcmp(SG(request_info).request_method, "HEAD")) {
- spprintf(&RED, 0, "Redirecting to <a href=\"%s?%s\">%s?%s</a>.\n", URI, query, URI, query);
- }
+ spprintf(&RED, 0, "Redirecting to <a href=\"%s?%s\">%s?%s</a>.\n", URI, query, URI, query);
} else {
spprintf(&LOC, 0, "Location: %s", URI);
- if (SG(request_info).request_method && strcmp(SG(request_info).request_method, "HEAD")) {
- spprintf(&RED, 0, "Redirecting to <a href=\"%s\">%s</a>.\n", URI, URI);
- }
+ spprintf(&RED, 0, "Redirecting to <a href=\"%s\">%s</a>.\n", URI, URI);
}
efree(URI);
if (is_numeric_string(Z_STRVAL_P(method), Z_STRLEN_P(method), NULL, NULL, 1)) {
convert_to_long(method);
} else {
- ulong mn;
+ int mn;
if (!(mn = http_request_method_exists(1, 0, Z_STRVAL_P(method)))) {
RETURN_FALSE;
}
RETURN_LONG((long) http_request_method_exists(1, 0, Z_STRVAL_P(method)));
}
case IS_LONG:
- RETURN_LONG((long) http_request_method_exists(0, Z_LVAL_P(method), NULL));
+ RETURN_LONG((long) http_request_method_exists(0, (int) Z_LVAL_P(method), NULL));
default:
RETURN_FALSE;
}
RETURN_FALSE;
}
- RETURN_STRING(estrdup(http_request_method_name((ulong) method)), 0);
+ RETURN_STRING(estrdup(http_request_method_name((int) method)), 0);
}
}
/* }}} */