diff options
| author | Brian France <bfrance@php.net> | 2003-08-20 20:51:10 +0000 |
|---|---|---|
| committer | Brian France <bfrance@php.net> | 2003-08-20 20:51:10 +0000 |
| commit | d50e0bf4ded1b1fd8218b11fb0f224c1fb37874e (patch) | |
| tree | 64335fd0b0737149c7cd0bbde6bc714c8ac0ef00 /ext/standard/head.c | |
| parent | 27582c48628f97366d71513e71090367ec9b87d4 (diff) | |
| download | php-git-d50e0bf4ded1b1fd8218b11fb0f224c1fb37874e.tar.gz | |
Added a parameter to php_setcookie to toggle URL encoding of the cookie data
Added the function setrawcookie that turns off URL encoding of the cookie data
Changed setcookie to turn on the URL encoding of the cookie data
Diffstat (limited to 'ext/standard/head.c')
| -rw-r--r-- | ext/standard/head.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/ext/standard/head.c b/ext/standard/head.c index 542dfe47ac..04d1a8608d 100644 --- a/ext/standard/head.c +++ b/ext/standard/head.c @@ -65,7 +65,7 @@ PHPAPI int php_header(TSRMLS_D) } -PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, time_t expires, char *path, int path_len, char *domain, int domain_len, int secure TSRMLS_DC) +PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, time_t expires, char *path, int path_len, char *domain, int domain_len, int secure, int url_encode TSRMLS_DC) { char *cookie, *encoded_value = NULL; int len=sizeof("Set-Cookie: "); @@ -75,11 +75,14 @@ PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, t int result; len += name_len; - if (value) { + if (value && url_encode) { int encoded_value_len; encoded_value = php_url_encode(value, value_len, &encoded_value_len); len += encoded_value_len; + } else if ( value ) { + encoded_value = estrdup(value); + len += value_len; } if (path) { len += path_len; @@ -150,7 +153,30 @@ PHP_FUNCTION(setcookie) return; } - if (php_setcookie(name, name_len, value, value_len, expires, path, path_len, domain, domain_len, secure TSRMLS_CC) == SUCCESS) { + if (php_setcookie(name, name_len, value, value_len, expires, path, path_len, domain, domain_len, secure, 1 TSRMLS_CC) == SUCCESS) { + RETVAL_TRUE; + } else { + RETVAL_FALSE; + } +} +/* }}} */ + +/* {{{ proto bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure]]]]]) + Send a cookie with no url encoding of the value */ +PHP_FUNCTION(setrawcookie) +{ + char *name, *value = NULL, *path = NULL, *domain = NULL; + long expires = 0; + zend_bool secure = 0; + int name_len, value_len, path_len, domain_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|slssb", &name, + &name_len, &value, &value_len, &expires, &path, + &path_len, &domain, &domain_len, &secure) == FAILURE) { + return; + } + + if (php_setcookie(name, name_len, value, value_len, expires, path, path_len, domain, domain_len, secure, 0 TSRMLS_CC) == SUCCESS) { RETVAL_TRUE; } else { RETVAL_FALSE; |
