ID: 19538 Updated by: [EMAIL PROTECTED] Reported By: misiek at pld dot org dot pl -Status: Open +Status: Feedback Bug Type: Feature/Change Request Operating System: ALL PHP Version: 4.2.3 New Comment:
Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip >From PHP 5 you can force this to be set with the ini setting "mail_force_extra_parameters", see also: http://news.php.net/article.php?group=php.cvs&article=19210 Derick Previous Comments: ------------------------------------------------------------------------ [2002-10-29 14:55:00] misiek at pld dot org dot pl Ok, here is simplest verion of what I requested - unfortunately it's not configureable. I hope that code is ok (is it in terms of php codding?) diff -urN php-4.2.3.org/ext/standard/mail.c php-4.2.3/ext/standard/mail.c --- php-4.2.3.org/ext/standard/mail.c Tue Oct 29 21:35:04 2002 +++ php-4.2.3/ext/standard/mail.c Tue Oct 29 21:33:03 2002 @@ -21,6 +21,8 @@ #include <stdlib.h> #include <ctype.h> #include <stdio.h> +#include <syslog.h> +#include <string.h> #include "php.h" #include "ext/standard/info.h" #if !defined(PHP_WIN32) @@ -37,6 +39,10 @@ #include "safe_mode.h" #include "exec.h" +#include "zend_operators.h" + +#include "zend_globals.h" + #if HAVE_SENDMAIL #ifdef PHP_WIN32 #include "win32/sendmail.h" @@ -166,8 +172,42 @@ efree (sendmail_cmd); if (sendmail) { - fprintf(sendmail, "To: %s\n", to); - fprintf(sendmail, "Subject: %s\n", subject); + if ((to != NULL) && (strlen(to)!=0)) { + fprintf(sendmail, "To: %s\n", to); + } + if ((subject != NULL) && (strlen(subject)!=0)) { + fprintf(sendmail, "Subject: %s\n", subject); + } + + TSRMLS_FETCH(); + + if (PG(http_globals)[TRACK_VARS_SERVER]) { + zval **remote_addr, **server_name, **server_port, + **request_uri, **http_user_agent; + + if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "REMOTE_ADDR", sizeof("REMOTE_ADDR"), (void **) &remote_addr)==SUCCESS) { + convert_to_string_ex(remote_addr); + fprintf(sendmail, "HTTP-Posting-Client: %s\n", Z_STRVAL_PP(remote_addr)); + } + if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "SERVER_NAME", sizeof("SERVER_NAME"), (void **) &server_name)==SUCCESS) { + convert_to_string_ex(server_name); + fprintf(sendmail, "HTTP-Posting-URI: %s", Z_STRVAL_PP(server_name)); + if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "SERVER_PORT", sizeof("SERVER_PORT"), (void **) &server_port)==SUCCESS) { + convert_to_string_ex(server_port); + fprintf(sendmail, ":%s", Z_STRVAL_PP(server_port)); + } + if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "REQUEST_URI", sizeof("REQUEST_URI"), (void **) &request_uri)==SUCCESS) { + convert_to_string_ex(request_uri); + fprintf(sendmail, "%s", Z_STRVAL_PP(request_uri)); + } + fprintf(sendmail, "\n"); + } + if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "HTTP_USER_AGENT", sizeof("HTTP_USER_AGENT"), (void **) &http_user_agent)==SUCCESS) { + convert_to_string_ex(http_user_agent); + fprintf(sendmail, "HTTP-Posting-User-Agent: %s\n", Z_STRVAL_PP(http_user_agent)); + } + } + if (headers != NULL) { fprintf(sendmail, "%s\n", headers); } [EMAIL PROTECTED] ~]$ ------------------------------------------------------------------------ [2002-10-24 00:28:52] [EMAIL PROTECTED] Unassign from me, I've no time right now. Derick ------------------------------------------------------------------------ [2002-10-23 17:30:13] misiek at pld dot org dot pl Thats exactly it! Derick assigned this task but he is afaik busy and won't implement this soon. Too bad but I'm patient :-) ------------------------------------------------------------------------ [2002-10-23 17:24:55] beckman at purplecow dot com Ah, I see. So you want to be able to have a php.ini directive like this: add_mail_headers = "X-PHP-Script: {$_SERVER[HTTP_HOST]}{$_SERVER[REQUEST_URI]}\nX-Contact-If-Spammed: Contact Information\n"; So that every mail() call will add that line. I think that is a valid request, especially since a badly formed script can really mess things up. It would default to "", and if it was not properly written it would be ignored. By making it configurable, admins can choose to add or remove global mail headers. I think this would be very useful for installs which serve lots of customers. ------------------------------------------------------------------------ [2002-10-23 16:01:30] misiek at pld dot org dot pl I can't modify my customers scripts. Scripts are changing frequently, new customers upload new scripts and so on. Anyway: [EMAIL PROTECTED] customers]# grep -ri 'mail(' . | wc -l 2873 Changing 2873 not mine script means ,,introduce some bugs'', too. Basically I want feature that does similar thing to yours but configurable globally from php.ini. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/19538 -- Edit this bug report at http://bugs.php.net/?id=19538&edit=1