Debian Restore php.ini
Upload this debian default
file via ftp then restart the server using the following command:
This is the default settings file for new PHP installations. By default, PHP installs itself with a configuration suitable for development purposes, and *NOT* for production purposes. For several security-oriented considerations that should be taken before going online with your site, please consult php.ini-recommended and http://php.net/manual/en/security.php.
About
:
This file controls many aspects of PHP’s behavior. In order for PHP to read it, it must be named ‘php.ini’. PHP looks for it in the current working directory, in the path designated by the environment variable PHPRC, and in the path that was defined in compile time (in that order). Under Windows, the compile-time path is the Windows directory. The path in which the php.ini file is looked for can be overridden using the
in command line mode.
The syntax of the file is extremely simple. Whitespace and Lines beginning with a semicolon are silently ignored (as you probably guessed). Section headers (e.g. [Foo]) are also silently ignored, even though they might mean something in the future.
Directives are specified using the following syntax:
Directive names are *case sensitive* - foo=bar is different from FOO=bar.
The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one of the INI constants (On, Off, True, False, Yes, No and None) or an expression (e.g. E_ALL & ~E_NOTICE), or a quoted string (“foo”).
Expressions in the INI file are limited to bitwise operators and parentheses:
& bitwise AND
~ bitwise NOT
! boolean NOT
Boolean flags can be turned on using the values 1, On, True or Yes. They can be turned off using the values 0, Off, False or No.
An empty string can be denoted by simply not writing anything after the equal sign, or by using the None keyword:
foo = none ; sets foo to an empty string
foo = "none" ; sets foo to the string 'none'
If you use constants in your value, and these constants belong to a dynamically loaded extension (either a PHP extension or a Zend extension), you may only use these constants *after* the line that loads the extension.
All the values in the php.ini-dist file correspond to the built-in defaults (that is, if no php.ini is used, or if you delete these lines, the built-in defaults will be identical).
Enable the PHP scripting language engine under Apache
Enable compatibility mode with Zend Engine 1 (PHP 4.x)
Allow the tag. Otherwise, only
NOTE: Using short tags should be avoided when developing applications or libraries that are meant for redistribution, or deployment on PHP servers which are not under your control, because short tags may not
be supported on the target server. For portable, redistributable code, be sure not to use short tags.
Allow ASP-style tags
The number of significant digits displayed in floating point numbers
Enforce year 2000 compliance (will cause problems with non-compliant browsers)
Output buffering allows you to send header lines (including cookies) even after you send body content, at the price of slowing PHP’s output layer a bit. You can enable output buffering during runtime by calling the output
buffering functions. You can also enable output buffering for all files by setting this directive to On. If you wish to limit the size of the buffer to a certain size – you can use a maximum number of bytes instead of ‘On’, as
a value for this directive (e.g., output_buffering=4096).
You can redirect all of the output of your scripts to a function. For example, if you set output_handler to “mb_output_handler”, character encoding will be transparently converted to the specified encoding. Setting any output handler automatically turns on output buffering.
Note:
> People who wrote portable scripts should not depend on this ini directive. Instead, explicitly set the output handler using ob_start(). Using this ini directive may cause problems unless you know what script
is doing.
> You cannot use both “mb_output_handler” with “ob_iconv_handler” and you cannot use both “ob_gzhandler” and “zlib.output_compression”.
> output_handler must be empty if this is set ‘On’ !!!! Instead you must use zlib.output_handler.
Transparent output compression using the zlib library. Valid values for this option are ‘off’, ‘on’, or a specific buffer size to be used for compression (default is 4KB)
Note: Resulting chunk size may vary due to nature of compression. PHP outputs chunks that are few hundreds bytes each as a result of compression. If you prefer a larger chunk size for better performance, enable output_buffering in addition.
Note: You need to use zlib.output_handler instead of the standard output_handler, or otherwise the output will be corrupted.
zlib.output_compression_level = -1
You cannot specify additional output handlers if zlib.output_compression is activated here. This setting does the same as output_handler but in a different order.
Implicit flush tells PHP to tell the output layer to flush itself automatically after every output block. This is equivalent to calling the PHP function flush() after each and every call to print() or echo() and each and every HTML block. Turning this option on has serious performance implications and is generally recommended for debugging purposes only.
The unserialize callback function will be called (with the undefined class’ name as parameter), if the unserializer finds an undefined class which should be instantiated. A warning appears if the specified function is not defined, or if the function doesn’t include/implement the missing class. So only set this entry, if you really want to implement such a callback-function.
When floats & doubles are serialized store serialize_precision significant digits after the floating point. The default value ensures that when floats are decoded with unserialize, the data will remain the same.
Whether to enable the ability to force arguments to be passed by reference at function call time. This method is deprecated and is likely to be unsupported in future versions of PHP/Zend. The encouraged method of specifying which arguments should be passed by reference is in the function declaration. You’re encouraged to try and turn this option Off and make sure your scripts work properly with it in order to ensure they will work with future versions of the language (you will receive a warning each time you use this feature, and the argument will be passed by value instead of by reference).
Safe Mode
NOTE: This is considered a “broken” security measure. Applications relying on this feature will not recieve full support by the security team. For more information please see /usr/share/doc/php5-common/README.Debian.security
By default, Safe Mode does a UID compare check when opening files. If you want to relax this to a GID compare,
then turn on safe_mode_gid.
When safe_mode is on, UID/GID checks are bypassed when including files from this directory and its subdirectories.
(directory must also be in include_path or full path must be used when including)
When safe_mode is on, only executables located in the safe_mode_exec_dir will be allowed to be executed via the exec family of functions.
Setting certain environment variables may be a potential security breach. This directive contains a comma-delimited list of prefixes. In Safe Mode, the user may only alter environment variables whose names begin with the
prefixes supplied here. By default, users will only be able to set environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
Note: If this directive is empty, PHP will let the user modify ANY environment variable!
This directive contains a comma-delimited list of environment variables that the end user won’t be able to change using putenv(). These variables will be protected even if safe_mode_allowed_env_vars is set to allow to change them.
open_basedir, if set, limits all file operations to the defined directory and below. This directive makes most sense if used in a per-directory or per-virtualhost web server configuration file. This directive is *NOT* affected by whether Safe Mode is turned On or Off.
NOTE: This is considered a “broken” security measure. Applications relying on this feature will not recieve full support by the security team. For more information please see /usr/share/doc/php5-common/README.Debian.security
This directive allows you to disable certain functions for security reasons. It receives a comma-delimited list of function names. This directive is *NOT* affected by whether Safe Mode is turned On or Off.
This directive allows you to disable certain classes for security reasons. It receives a comma-delimited list of class names. This directive is *NOT* affected by whether Safe Mode is turned On or Off.
Colors for Syntax Highlighting mode. Anything that’s acceptable in would work.
highlight.comment = #FF9900
highlight.keyword = #007700
highlight.bg = #FFFFFF
highlight.default = #0000BB
highlight.html = #000000
If enabled, the request will be allowed to complete even if the user aborts the request. Consider enabling it if executing long request, which may end up being interrupted by the user or a browser timing out.
Determines the size of the realpath cache to be used by PHP. This value should be increased on systems where PHP opens many files to reflect the quantity of the file operations performed.
Duration of time, in seconds for which to cache realpath information for a given file or directory. For systems with rarely changing files, consider increasing this value.
Misc:
Decides whether PHP may expose the fact that it is installed on the server (e.g. by adding its signature to the Web server header). It is no security threat in any way, but it makes it possible to determine whether you use PHP
on your server or not.
max_execution_time = 60 ; Maximum execution time of each script, in seconds
max_input_time = 120 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 256M ; Maximum amount of memory a script may consume (128MB)
error_reporting is a bit-field. Or each number up to get desired error
reporting level
E_ALL – All errors and warnings (doesn’t include E_STRICT)
E_ERROR – fatal run-time errors
E_RECOVERABLE_ERROR – almost fatal run-time errors
E_WARNING – run-time warnings (non-fatal errors)
E_PARSE – compile-time parse errors
E_NOTICE – run-time notices (these are warnings which often result from a bug in your code, but it’s possible that it was intentional (e.g., using an uninitialized variable and relying on the fact it’s automatically initialized to an empty string)
E_STRICT – run-time notices, enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code
E_CORE_ERROR – fatal errors that occur during PHP’s initial startup
E_CORE_WARNING – warnings (non-fatal errors) that occur during PHP’s initial startup
E_COMPILE_ERROR – fatal compile-time errors
E_COMPILE_WARNING – compile-time warnings (non-fatal errors)
E_USER_ERROR – user-generated error message
E_USER_WARNING – user-generated warning message
E_USER_NOTICE – user-generated notice message
Examples:
Show all errors, except for notices and coding standards warnings
Show all errors, except for notices
Show only errors
Show all errors except for notices and coding standards warnings
Print out errors (as a part of the output). For production web sites, you’re strongly encouraged to turn this feature off, and use error logging instead (see below). Keeping display_errors enabled on a production web site
may reveal security information to end users, such as file paths on your Web server, your database schema or other information.
possible values for display_errors:
Off – Do not display any errors
stderr – Display errors to STDERR (affects only CGI/CLI binaries!)
stdout (On) – Display errors to STDOUT
Even when display_errors is on, errors that occur during PHP’s start-up sequence are not displayed. It’s strongly recommended to keep display_startup_errors off, except for when debugging.
Log errors into a log file (server-specific log, stderr, or error_log (below)) As stated above, you’re strongly advised to use error logging in place of error displaying on production web sites.
Set maximum length of log_errors. In error_log information about the source is added. The default is 1024 and 0 allows to not apply any maximum length at all.
Do not log repeated messages. Repeated errors must occur in same file on same line until ignore_repeated_source is set true.
Ignore source of message when ignoring repeated messages. When this setting is On you will not log errors with repeated messages from different files or source lines.
If this parameter is set to Off, then memory leaks will not be shown (on stdout or in the log). This has only effect in a debug compile, and if error reporting includes E_WARNING in the allowed list
report_zend_debug = 0
Store the last error/warning message in $php_errormsg (boolean).
Disable the inclusion of HTML tags in error messages.
Note: Never use this feature for production boxes.
If html_errors is set On PHP produces clickable error messages that direct to a page describing the error or function causing the error in detail. You can download a copy of the PHP manual from http://www.php.net/docs.php and change docref_root to the base URL of your local copy including the leading ‘/’. You must also specify the file extension being used including the dot.
Note: Never use this feature for production boxes.
docref_ext = .html
String to output before an error message.
String to output after an error message.
Log errors to specified file.
Log errors to syslog (Event Log on NT, not valid in Windows 95).
Note – track_vars is ALWAYS enabled as of PHP 4.0.3
The separator used in PHP generated URLs to separate arguments. Default is “&”.
List of separator(s) used by PHP to parse input URLs into variables. Default is “&”.
NOTE: Every character in this directive is considered as separator!
This directive describes the order in which PHP registers GET, POST, Cookie, Environment and Built-in variables (G, P, C, E & S respectively, often referred to as EGPCS or GPC). Registration is done from left to right, newer
values override older values.
Whether or not to register the EGPCS variables as global variables. You may want to turn this off if you don’t want to clutter your scripts’ global scope with user data. This makes most sense when coupled with track_vars – in which
case you can access all of the GPC variables through the $HTTP_*_VARS[], variables.
You should do your best to write your scripts so that they do not require register_globals to be on; Using form variables as globals can easily lead to possible security problems, if the code is not very well thought of.
NOTE: applications relying on this feature will not recieve full support by the security team. For more information please see /usr/share/doc/php5-common/README.Debian.security
Whether or not to register the old-style input arrays, HTTP_GET_VARS and friends. If you’re not using them, it’s recommended to turn them off, for performance reasons.
This directive tells PHP whether to declare the argv&argc variables (that would contain the GET information). If you don’t use these variables, you should turn it off for increased performance.
When enabled, the SERVER and ENV variables are created when they’re first used (Just In Time) instead of when the script starts. If these variables are not used within a script, having this directive on will result in a
performance gain. The PHP directives register_globals, register_long_arrays, and register_argc_argv must be disabled for this directive to have any affect.
Maximum size of POST data that PHP will accept.
Magic quotes
Magic quotes for incoming GET/POST/Cookie data.
Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
Use Sybase-style magic quotes (escape ‘ with ” instead of \’).
Automatically add files before or after any PHP document.
auto_append_file =
As of 4.0b4, PHP always outputs a character encoding by default in the Content-type: header. To disable sending of the charset, simply set it to be empty.
PHP’s built-in default is text/html
;default_charset = "iso-8859-1"
Always populate the $HTTP_RAW_POST_DATA variable.
UNIX: “/path1:/path2″
Windows: “\path1;\path2″
The root of the PHP pages, used only if nonempty. If PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
if you are running php as a CGI under any web server (other than IIS) see documentation for security issues. The alternate is to use the cgi.force_redirect configuration below
The directory under which PHP opens the script using /~username used only if nonempty.
Directory in which the loadable extensions (modules) reside.
Whether or not to enable the dl() function. The dl() function does NOT work properly in multithreaded servers, such as IIS or Zeus, and is automatically disabled on them.
NOTE: this is a potential security hole and is disabled by default in debian
cgi.force_redirect is necessary to provide security running PHP as a CGI under most web servers. Left undefined, PHP turns this on by default. You can turn it off here AT YOUR OWN RISK **You CAN safely turn this off for IIS, in fact, you MUST.**
if cgi.nph is enabled it will force cgi to always sent Status: 200 with every request.
if cgi.force_redirect is turned on, and you are not running under Apache or Netscape (iPlanet) web servers, you MAY need to set an environment variable name that PHP will look for to know it is OK to continue execution. Setting this variable MAY cause security issues, KNOW WHAT YOU ARE DOING FIRST.
cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting this to 1 will cause PHP CGI to fix it’s paths to conform to the spec. A setting of zero causes PHP to behave as before. Default is 1. You should fix your scripts to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
FastCGI under IIS (on WINNT based OS) supports the ability to impersonate security tokens of the calling client. This allows IIS to define the security context that the request runs under. mod_fastcgi under Apache
does not currently support this feature (03/17/2002) Set to 1 if running under IIS. Default is zero.
Disable logging through FastCGI connection
cgi.rfc2616_headers configuration option tells PHP what type of headers to use when sending HTTP response code. If it’s set 0 PHP sends Status: header that is supported by Apache. When this option is set to 1 PHP will send
RFC2616 compliant header. Default is zero.
Whether to allow HTTP file uploads.
Temporary directory for HTTP uploaded files (will use system default if not specified).
Maximum allowed size for uploaded files.
Maximum number of files that can be uploaded via a single request
Whether to allow the treatment of URLs (like http:// or ftp://) as files.
Whether to allow include/require to open URLs (like http:// or ftp://) as files.
Define the anonymous ftp password (your email address)
Define the User-Agent string
Default timeout for socket based streams (seconds)
If your scripts have to deal with files from Macintosh systems, or you are running on a Mac and need to deal with files from unix or win32 systems, setting this flag will cause PHP to automatically detect the EOL character in those files so that fgets() and file() will work regardless of the source of the file.
If you wish to have an extension loaded automatically, use the following syntax:
For example, on Windows:
… or under UNIX:
Note that it should be the name of the module only; no directory information needs to go here. Specify the location of the extension with the extension_dir directive above.
[Date]
Defines the default timezone used by the date functions
date.default_longitude = 35.2333
date.sunset_zenith = 90.583333
[filter]
filter.default_flags =
[iconv]
iconv.internal_encoding = ISO-8859-1
iconv.output_encoding = ISO-8859-1
[sqlite]
[xmlrpc]
xmlrpc_errors = 0
[Pcre]
PCRE library backtracking limit.
PCRE library recursion limit.
Please note that if you set this value to a high number you may consume all the available process stack and eventually crash PHP (due to reaching the tack size limit imposed by the Operating System).
[Syslog]
Whether or not to define the various syslog variables (e.g. $LOG_PID, $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In runtime, you can define these variables by calling define_syslog_variables().
[mail function]
For Win32 only.
smtp_port = 25
For Win32 only.
For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
Force the addition of the specified parameters to be passed as extra parameters to the sendmail binary. These parameters will always replace the value of the 5th parameter to mail(), even in safe mode.
[SQL]
[ODBC]
odbc.default_user = Not yet implemented
odbc.default_pw = Not yet implemented
Allow or prevent persistent links.
Check that a connection is still valid before reuse.
Maximum number of persistent links. -1 means no limit.
Maximum number of links (persistent + non-persistent). -1 means no limit.
Handling of LONG fields. Returns number of bytes to variables. 0 means passthru.
Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. See the documentation on odbc_binmode and odbc_longreadlen for an explanation if uodbc.defaultlrl and uodbc.defaultbinmode
[MySQL]
Allow or prevent persistent links.
Maximum number of persistent links. -1 means no limit.
Maximum number of links (persistent + non-persistent). -1 means no limit.
Default port number for mysql_connect(). If unset, mysql_connect() will use the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the compile-time value defined MYSQL_PORT (in that order). Win32 will only look
at MYSQL_PORT.
Default socket name for local MySQL connects. If empty, uses the built-in MySQL defaults.
Default host for mysql_connect() (doesn’t apply in safe mode).
Default user for mysql_connect() (doesn’t apply in safe mode).
Default password for mysql_connect() (doesn’t apply in safe mode). Note that this is generally a *bad* idea to store passwords in this file. *Any* user with PHP access can run ‘echo get_cfg_var(“mysql.default_password”) and reveal this password! And of course, any users with read access to this file will be able to reveal the password as well.
Maximum time (in seconds) for connect timeout. -1 means no limit
Trace mode. When trace_mode is active (=On), warnings for table/index scans and SQL-Errors will be displayed.
[MySQLi]
Maximum number of links. -1 means no limit.
Default port number for mysqli_connect(). If unset, mysqli_connect() will use the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the compile-time value defined MYSQL_PORT (in that order). Win32 will only look
at MYSQL_PORT.
Default socket name for local MySQL connects. If empty, uses the built-in MySQL defaults.
Default host for mysql_connect() (doesn’t apply in safe mode).
Default user for mysql_connect() (doesn’t apply in safe mode).
Default password for mysqli_connect() (doesn’t apply in safe mode). Note that this is generally a *bad* idea to store passwords in this file. *Any* user with PHP access can run ‘echo get_cfg_var(“mysqli.default_pw”) and reveal this password! And of course, any users with read access to this file will be able to reveal the password as well.
Allow or prevent reconnect
[mSQL]
Allow or prevent persistent links.
Maximum number of persistent links. -1 means no limit.
Maximum number of links (persistent+non persistent). -1 means no limit.
[OCI8]
enables privileged connections using external credentials (OCI_SYSOPER, OCI_SYSDBA)
Connection: The maximum number of persistent OCI8 connections per process. Using -1 means no limit.
Connection: The maximum number of seconds a process is allowed to maintain an idle persistent connection. Using -1 means idle persistent connections will be maintained forever.
Connection: The number of seconds that must pass before issuing a ping during oci_pconnect() to check the connection validity. When set to 0, each oci_pconnect() will cause a ping. Using -1 disables
pings completely.
Tuning: This option enables statement caching, and specifies how many statements to cache. Using 0 disables statement caching.
Tuning: Enables statement prefetching and sets the default number of rows that will be fetched automatically after statement execution.
Compatibility. Using On means oci_close() will not close oci_connect() and oci_new_connect() connections.
[PostgresSQL]
Allow or prevent persistent links.
Detect broken persistent links always with pg_pconnect(). Auto reset feature requires a little overheads.
Maximum number of persistent links. -1 means no limit.
Maximum number of links (persistent+non persistent). -1 means no limit.
[code lang="php"]
pgsql.max_links = -1
Ignore PostgreSQL backends Notice message or not. Notice message logging require a little overheads.
Log PostgreSQL backends Noitce message or not. Unless pgsql.ignore_notice=0, module cannot log notice message.
[Sybase]
Allow or prevent persistent links.
Maximum number of persistent links. -1 means no limit.
Maximum number of links (persistent + non-persistent). -1 means no limit.
Minimum error severity to display.
Minimum message severity to display.
Compatibility mode with old versions of PHP 3.0.
If on, this will cause PHP to automatically assign types to results according to their Sybase type, instead of treating them all as strings. This compatibility mode will probably not stay around forever, so try applying
whatever necessary changes to your code, and turn it off.
[Sybase-CT]
Allow or prevent persistent links.
Maximum number of persistent links. -1 means no limit.
Maximum number of links (persistent + non-persistent). -1 means no limit.
Minimum server message severity to display.
Minimum client message severity to display.
[bcmath]
Number of decimal digits for all bcmath functions.
[browscap]
[Informix]
Default host for ifx_connect() (doesn’t apply in safe mode).
Default user for ifx_connect() (doesn’t apply in safe mode).
Default password for ifx_connect() (doesn’t apply in safe mode).
Allow or prevent persistent links.
Maximum number of persistent links. -1 means no limit.
Maximum number of links (persistent + non-persistent). -1 means no limit.
If on, select statements return the contents of a text blob instead of its id.
If on, select statements return the contents of a byte blob instead of its id.
Trailing blanks are stripped from fixed-length char columns. May help the life of Informix SE users.
If on, the contents of text and byte blobs are dumped to a file instead of keeping them in memory.
NULL’s are returned as empty strings, unless this is set to 1. In that case, NULL’s are returned as string ‘NULL’.
[Session]
Handler used to store/retrieve data.
Argument passed to save_handler. In the case of files, this is the path where data files are stored. Note: Windows users have to change this variable in order to use PHP’s session functions.
As of PHP 4.0.1, you can define the path as:
where N is an integer. Instead of storing all the session files in /path, what this will do is use subdirectories N-levels deep, and store the session data in those directories. This is useful if you or your OS have problems with lots of files in one directory, and is a more efficient layout for servers that handle lots of sessions.
NOTE 1: PHP will not create this directory structure automatically.
You can use the script in the ext/session dir for that purpose.
NOTE 2: See the section on garbage collection below if you choose to
use subdirectories for session storage
The file storage module creates files using mode 600 by default.
You can change that by using
where MODE is the octal representation of the mode. Note that this does not overwrite the process’s umask.
Whether to use cookies.
This option enables administrators to make their users invulnerable to attacks which involve passing session ids in URLs; defaults to 0.
Name of the session (used as cookie name).
Initialize session on request startup.
Lifetime in seconds of cookie or, if 0, until browser is restarted.
The path for which the cookie is valid.
The domain for which the cookie is valid.
Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
Handler used to serialize data. php is the standard serializer of PHP.
Define the probability that the ‘garbage collection’ process is started on every session initialization.
The probability is calculated by using gc_probability/gc_divisor, e.g. 1/100 means there is a 1% chance that the GC process starts on each request.
This is disabled in the Debian packages, due to the strict permissions on /var/lib/php5. Instead of setting this here, see the cronjob at /etc/cron.d/php5, which uses the session.gc_maxlifetime setting below. php scripts using their own session.save_path should make sure garbage collection is enabled by setting session.gc_probability
session.gc_divisor = 100
After this number of seconds, stored data will be seen as ‘garbage’ and cleaned up by the garbage collection process.
NOTE: If you are using the subdirectory option for storing session files (see session.save_path above), then garbage collection does *not* happen automatically. You will need to do your own garbage collection through a shell script, cron entry, or some other method.
For example, the following script would is the equivalent of setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): cd /path/to/sessions; find -cmin +24 | xargs rm
PHP 4.2 and less have an undocumented feature/bug that allows you to to initialize a session variable in the global scope, albeit register_globals is disabled. PHP 4.3 and later will warn you, if this feature is used. You can disable the feature and the warning separately. At this time, the warning is only displayed, if bug_compat_42 is enabled.
session.bug_compat_warn = 1
Check HTTP Referer to invalidate externally stored URLs containing ids. HTTP_REFERER has to contain this substring for the session to be considered as valid.
How many bytes to read from the file.
Specified here to create the session id.
session.entropy_length = 16
session.entropy_file = /dev/urandom
Set to {nocache,private,public,} to determine HTTP caching aspects or leave this empty to avoid sending anti-caching headers.
Document expires after n minutes.
trans sid support is disabled by default.
- Use of trans sid may risk your users security.
- Use this option with caution.
- User may send URL contains active session ID to other person via. email/irc/etc.
- URL that contains active session ID may be stored in publically accessible computer.
- User may access your site with the same session ID always using URL stored in browser’s history or bookmarks.
Select a hash function:
0: MD5 (128 bits)
1: SHA-1 (160 bits)
Define how many bits are stored in each character when converting the binary hash data to something readable.
5 bits: 0-9, a-v
6 bits: 0-9, a-z, A-Z, "-", ","
session.hash_bits_per_character = 4
The URL rewriter will look for URLs in a defined set of HTML tags. form/fieldset are special; if you include them here, the rewriter will add a hidden field with the info which is otherwise appended to URLs. If you want XHTML conformity, remove the form entry.
Note that all valid entries require a “=”, even if no value follows.
[MSSQL]
Allow or prevent persistent links.
Maximum number of persistent links. -1 means no limit.
Maximum number of links (persistent+non persistent). -1 means no limit.
Minimum error severity to display.
Minimum message severity to display.
Compatibility mode with old versions of PHP 3.0.
Connect timeout
Query timeout
Valid range 0 – 2147483647. Default = 4096.
Valid range 0 – 2147483647. Default = 4096.
Limits the number of records in each batch. 0 = all records in one batch.
Specify how datetime and datetim4 columns are returned On => Returns data converted to SQL server settings Off => Returns values as YYYY-MM-DD hh:mm:ss
Use NT authentication when connecting to the server
Specify max number of processes. -1 = library default
FreeTDS defaults to 4096
mssql.max_procs = -1
Specify client character set. If empty or not set the client charset from freetds.comf is used. This is only used when compiled with FreeTDS
[Assertion]
Assert(expr); active by default.
Issue a PHP warning for each failed assertion.
Don’t bail out by default.
User-function to be called if an assertion fails.
Eval the expression with current error_reporting(). Set to true if you want error_reporting(0) around the eval().
[COM]
path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
allow Distributed-COM calls
autoregister constants of a components typlib on com_load()
register constants casesensitive
show warnings on duplicate constant registrations
[mbstring]
language for internal character representation.
internal/script encoding.
Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*)
http input encoding.
http output encoding. mb_output_handler must be registered as output buffer to function
enable automatic encoding translation according to mbstring.internal_encoding setting. Input chars are converted to internal encoding by setting this to On.
Note: Do _not_ use automatic encoding translation for portable libs/applications.
automatic encoding detection order. auto means
substitute_character used when character cannot be converted one from another
overload(replace) single byte functions by mbstring functions. mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), etc. Possible values are 0,1,2,4 or combination of them. For example, 7 for overload everything.
1: Overload mail() function
2: Overload str*() functions
4: Overload ereg*() functions
mbstring.func_overload = 0
[FrontBase]
fbsql.autocommit = On
fbsql.show_timestamp_decimals = Off
fbsql.default_database =
fbsql.default_database_password =
fbsql.default_host =
fbsql.default_user = "_SYSTEM"
fbsql.generate_warnings = Off
fbsql.max_connections = 128
fbsql.max_links = 128
fbsql.max_persistent = -1
fbsql.max_results = 128
[gd]
Tell the jpeg decode to libjpeg warnings and try to create a gd image. The warning will then be displayed as notices
disabled by default
[exif]
Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. With mbstring support this will automatically be converted into the encoding given by corresponding encode setting. When empty mbstring.internal_encoding is used. For the decode settings you can distinguish between motorola and intel byte order. A decode setting cannot be empty.
exif.decode_unicode_motorola = UCS-2BE
exif.decode_unicode_intel = UCS-2LE
exif.encode_jis =
exif.decode_jis_motorola = JIS
exif.decode_jis_intel = JIS
[Tidy]
The path to a default tidy configuration file to use when using tidy
Should tidy clean and repair output automatically?
WARNING: Do not use this option if you are generating non-html content such as dynamic images
[soap]
Enables or disables WSDL caching feature.
Sets the directory name where SOAP extension will put cache files.
(time to live) Sets the number of second while cached file will be used instead of original one.
Local Variables:
tab-width: 4
End:
PHP Blacklisting Multiple IP Address
Here is a simple way to blacklist multiple IP addresses with PHP:
// The blacklisted IPs.
$denied_ips = array(
'123.456.789.1',
'127.0.0.1',
'67.220.200.75'
);
Open a PHP tag and then create a variable name
contains an array of the 3 assign values which are the IPs we are dealing with.
function getUserIP()
{
//check ip from share internet
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
//to check ip is pass from proxy
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
//The user
$visitorIp = getUserIP();
This is the function we are going to use to get the IP of the visitor. Some people just like to use
which is fine but i believe by this method we will get more accurate data.
This code uses the function array_search. Searches the array for a given value and returns the corresponding key if successful.
$status = array_search($visitorIp, $denied_ips);
// Let's check if $status has a true OR false value.
if($status !== false)
{
echo "YOUR IP HAS BEEN BANNED.";
// header("Location: http://zombo.com");
exit;
}
?>
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.
PHP Create Twitter Widget
Twitter has currently an API limit of 150 calls per hour, and to make sure that you will get a successful response it is recommended to use your username/password. Otherwise Twitter will use the API calls that are for everyone with your IP/Server’s IP and it will start to give an error saying that you have used up your API limit very quickly.
Making the Widget
Caching and HTML:
This will check if the cache file exists and then how old it is. This is then written to your server in the cache file.
function twitterCapture() {
// Set your username and password here
$user = 'twitter_username'; // Twitter Username
$password = 'xxxxxxxx'; // Twitter Password
$tw = curl_init("http://twitter.com/statuses/user_timeline/{$user}.json"); //grabs the JSON format of your timelines
curl_setopt($tw,CURLOPT_TIMEOUT, 30); // Timeout (for when Twitter is down)
curl_setopt($tw,CURLOPT_USERPWD,$user . ":" . $password); // Uses your username and password
curl_setopt($tw,CURLOPT_RETURNTRANSFER,1); // returns
$json = curl_exec ($tw); // Executes the cURL and puts it into the varible
return $json; // returns what was grabbed
}
$cachefile = 'cache/twitterCache.json'; // the location to your cache file
$cachetime = 10 * 60; // set the cach time 10 * 60 (1 hour)
// if the file exists // if and the time it was created is less then cache time
if ( (file_exists($cachefile)) && ( time() - $cachetime < filemtime($cachefile) ) ) {
// script will not use the cached version
}else{ // the file didn't exist or is old
ob_start(); // turn on the output buffering
$fp = fopen($cachefile, 'w'); // opens for writing only or will creat it's not there
fwrite($fp, twitterCapture()); // writes to the file what was grabbed from the previouse function
fclose($fp); // closes
ob_end_flush(); // finishes and flushes the output buffer
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Little Twitter Widget</title>
<!-- Start of CSS -->
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/main.css" />
<!-- Start of JS -->
<script type="text/javascript" src="js/jquery-1.4.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<div id="twitter_widget_top" class="center" ></div><!-- The top of the widget -->
<div id="twitter_widget_body" class="center"> <!-- The body wrap -->
<div id="twitter_widget_tweet"> <!-- The tweet area -->
<div id="twitter_movement"> <!-- To position the icon reletive to -->
<a id="twitter_icon" href="http://twitter.com/"></a> <!-- Twitter icon -->
<div id="twitterWrap"> <!-- The blue area -->
<div id="twitter"> <!-- The main twitter data -->
<noscript>JavaScript must be on to view tweets</noscript> <!-- Incase no js -->
<p class="tweet">Loading...</p> <!-- The Tweet -->
<p class="created_at"></p> <!-- Date created -->
</div>
</div>
<p class="clear"></p> <!-- Clear the floats -->
</div>
<a href="" class="previous tweetNav"></a><!-- Next button -->
<p class="follow_me">Follow me - <a href="http://twitter.com/alexanderbor" class="screen_name"></a></p> <!-- Follow me link -->
<a href="" class="next tweetNav"></a> <!-- Pre button -->
<p class="clear"></p>
</div>
</div>
<div id="twitter_widget_bottom" class="center"></div><!-- Bottom of widet -->
<p class="info">Join my <span class="followedNumber"></span> followers - <span class="user_name"></span></p>
</body>
/* CSS Document */
/* UTULITIES */
.clear{clear: both;}
.push{height: 30px;}
/* END */
/* ORDER PAGE CORRECTLY */
*{margin: 0; padding: 0;}
html{ position: relative;}
body{font-family: Helvetica, Verdana, Arial, sans-serif; width: 100%; height: 100%; background: #1E202A;color:#3494E5;}
.center{margin: 0 auto;}
a{text-decoration:none;color:#4AA1EF; overflow: hidden}
a:hover{color: #3D658E;}
/* END */
#twitter_widget_top{background: url(../images/top.jpg) top left no-repeat; width: 475px; height: 30px;margin-top:81px; } /* Top of widget */
#twitter_widget_body{background: url(../images/body.jpg) left repeat-y; width: 475px;} /*Â BODYÂ */
#twitter_widget_bottom{background: url(../images/bottom.jpg) bottom left no-repeat; width: 475px; height: 21px; } /* foot */
#twitter_icon{background:url("../images/twitter_icon.jpg") no-repeat scroll center bottom transparent;height:50px;margin-left:30px;position:absolute;top:33%;width:50px;}
#twitter_icon:hover{ background-position: top center;} /* Move icon on hover */
#twitterWrap{   /* Don't show overflow and set a width */
overflow: hidden;
width: 350px;
float: right;
background: #1E202A;
margin: 20px 20px 0;
border: 1px solid #062333;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
#twitter_movement{position: relative;} /* To align icon to */
.tweet { /* The Tweet */
font-family:"Lucida Grande",Verdana,Arial,sans-serif;
font-size:15px;
line-height:18px;
padding:15px;
position:relative;
text-align:center;
}
.next{background:url("../images/arrows.jpg") no-repeat right top transparent;float:right;height:14px;margin-right:20px;margin-top:10px;width:21px;}
.next:hover{background-position: right center;} /* Next button */
.previous{background:url("../images/arrows.jpg") no-repeat left bottom transparent;float:left;height:14px;margin-left: 103px;margin-top:10px;width:21px;}
.previous:hover{background-position: left center;}
.created_at {display:block;font-size:12px;font-style:italic;padding-right:20px;text-align:right;}
.follow_me{display:block;float:left;margin:10px;text-align:center;width:280px;}
We will use the
to grab our cached file to get the twitter status as this makes it a lot easier.
$.getJSON('cache/twitterCache.json', function(data) { // get the file and put in var "data"
// Add information about the user
$('.followedNumber').html( data[0].user.followers_count); // follow count
$('.screen_name').html( data[0].user.screen_name); // screen name
$('.statuses_count').html(data[0].user.statuses_count); // amount of tweets
$('.user_name').html(data[0].user.name); // username
// defult variables
var totalAmount = "", // total amount of items
moveOut = "", // If we are moving in or out the animation
moveIn = "", // If we are moving in or out the animation
current = 0, // Set the current to 0
$i = 0; // Set i to 0
$.each(data, function(){ // for each of the "data"
totalAmount = $i; // set the varible total amount to i
$i++; // plus one to i
});
clicked(current); // run the function to grab the first item
$(".next").click(function(){ // when next is clicked
if ($(this).hasClass('active') ){ // if it's active
current = current + 1; // set current to + 1
moveOut = "+"; // make the move out animation correct
moveIn = "-"; // same with move in
clicked(current); // run the function and pass in current
}; // no else, so nothing will happen if we click when not active
});
$(".previous").click(function(){ // almost the same as above
if ($(this).hasClass('active') ){
current = current - 1; // minus one from the tcurrent
moveOut = "-";
moveIn = "+";
clicked(current);
};
});
//
// Time function from the Twitter Blog JS file
//
function relative_time(time_value) {
var values = time_value.split(" ");
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
delta = delta + (relative_to.getTimezoneOffset() * 60);
if (delta < 60) {
return 'less than a minute ago';
} else if(delta < 120) {
return 'about a minute ago';
} else if(delta < (60*60)) {
return (parseInt(delta / 60)).toString() + ' minutes ago';
} else if(delta < (120*60)) {
return 'about an hour ago';
} else if(delta < (24*60*60)) {
return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
} else if(delta < (48*60*60)) {
return '1 day ago';
} else {
return (parseInt(delta / 86400)).toString() + ' days ago';
}
}
function clicked(current){ // when clicked function runs
// get the width to be able to slide the tweet area
var tweetAreaWidth = $('#twitterWrap').width();
// fade out the time it was created
$('.created_at').animate({"opacity": "0"}, 400); // fade out the date
$('.tweet').animate({"right": moveOut + tweetAreaWidth + "px"}, function(){ // move the .tweet div left/right then
$('.tweet') .html( data[ current ].text ); // add the next tweet
var time = relative_time( data[ current ].created_at ); // get the next date
$('.created_at').html(time); // put data into useable format
var tweetAreaHeight = $('#twitter').height(); // get the height of the tweet area now its got the tweet inside
$('#twitterWrap').animate({"height": tweetAreaHeight + "px"}, function(){ // change the tweet height to the new div
$('.tweet').css({"right": moveIn + tweetAreaWidth + "px"}).animate({"right": 0}); // move in the tweet
$('.created_at').animate({"opacity": "1"}, 500); // fade in the date
});
});
// dealing with the click buttons
$('.tweetNav').removeClass('inactive').addClass('active'); // remove inactive from all buttons and add active
if(current == totalAmount){ // if current is equal to the total amount make the next button inactive
$('.next').removeClass('active').addClass('inactive');
}
if(current == 0){
$('.previous').removeClass('active').addClass('inactive');
}
$('.inactive').animate({"opacity": "0.3"}, 1000); // make inactive buttons fade out
$('.active').animate({"opacity": "1"}, 500); // made active buttons fade in
$('.tweetNav').click( function(){ return false; }); // return false
}; // end of clicked function
});// end of json
});
This is to see how to access the elements that are returned is using FireBug as this lets us see the name of the json elements and what is nested in them.
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.
Twitter oAuth Stuck in Callback Loop
This problem can sometimes be caused by disabling or refusing to accept cookies. If not, the page cannot access the
in the URL then it will keep loooping if you have a check to look for them to see what stage your at in the oAuth process.
must precede all the
to make it work. This is because you need an active mysqli connection to use that function.
Check your code for:
You need to change database connection to mysqli:
This function was causing the loop:
private static function _escape($values)
{
debug('calling '.__FUNCTION__.'()...');
if(!is_array($values))
{
/* Quote if not integer */
if ( !is_numeric($values) || $values{0} == '0' )
{
$values = stripslashes($values);
// $values = mysqli_real_escape_string(self::$db, $values);
}
}
return $values;
}
Options for escaping:
// $values = mysqli_real_escape_string(self::$db, $values);
// $values = mysql_real_escape_string(self::$db, $values);
//alternative to mysql_real_escape_string
$search = array("\x00", "\n", "\r", "\\", "'", "\"", "\x1a");
$replace = array("\\x00", "\\n", "\\r", "\\\\" ,"\'", "\\\"", "\\\x1a");
$values = str_replace($search, $replace, $value);
I successfully fixed the problem by converting my db to the new mysqli way: Convert old mysql to new mysqli database connections in PHP code.
Full working escape function using mysqli:
private static function _escape($values)
{
debug('calling '.__FUNCTION__.'()...');
if(!is_array($values))
{
/* Quote if not integer */
if ( !is_numeric($values) || $values{0} == '0' )
{
if (!self::$db) self::_dbconnect();
$values = stripslashes($values);
self::$db->set_charset("utf8"); //set default character set
$values = mysqli_real_escape_string(self::$db, $values);
debug($values);
}
}
return $values;
}
This can be used with get vars to process
safely to protect from mysql database injection attacks.
private static function _getvars()
{
debug('calling '.__FUNCTION__.'()...');
$vars = array();
//load in GET variables
foreach($_GET as $n => $v)
{
$vars['GET'][$n] = self::_escape($v);
}
//load in POST variables
foreach($_POST as $n => $v)
{
$vars['POST'][$n] = self::_escape($v);
}
return $vars;
}
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.
PHP Create Cron Job
PHP Create Cron Job
The cronTab, or “Cron Table”, is a Linux system process enables users to schedule jobs (commands or shell scripts) to run periodically at certain times or dates.
The cronTab command creates a cronTab file containing commands and how often cron should execute them. Each entry in a cronTab file consists of six fields, specified in the following order:
A cron job will always have five columns each of which represent a chronological ‘operator’ followed by the full path and command to execute:
If one wanted to schedule a task for 12am on the first day of every month it would look something like this:
If we wanted to schedule a task to run every Saturday at 8:30am we’d write it as follows:
To Create Cron Job with PHP:
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.
Submit Form through PHP CURL
<input type=hidden name="oid" value="00D400000009mUU">
<input type=hidden name="retURL" value="http://thank-you.html">
<label for="first_name">First Name</label><input id="first_name" maxlength="40" name="first_name" size="20" type="text" /><br>
<label for="last_name">Last Name</label><input id="last_name" maxlength="80" name="last_name" size="20" type="text" /><br>
<label for="street">Address</label><textarea name="street"></textarea><br>
<label for="city">City</label><input id="city" maxlength="40" name="city" size="20" type="text" /><br>
<label for="zip">Zip</label><input id="zip" maxlength="20" name="zip" size="20" type="text" /><br>
<label for="email">Email</label><input id="email" maxlength="80" name="email" size="20" type="text" /><br>
<label for="phone">Phone</label><input id="phone" maxlength="40" name="phone" size="20" type="text" /><br>
<input type="submit" name="submit">
</form>
$query_string = "";
//If there are POST variables
if ($_POST) {
//Initialize the $kv array for later use
$kv = array();
//For each POST variable as $name_of_input_field => $value_of_input_field
foreach ($_POST as $key => $value) {
//Set array element for each POST variable (ie. first_name=Arsham)
$kv[] = stripslashes($key)."=".stripslashes($value);
}
//Create a query string with join function separted by &
$query_string = join("&", $kv);
}
//Check to see if cURL is installed ...
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
//The original form action URL from Step 2 :)
$url = 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8';
//Open cURL connection
$ch = curl_init();
//Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($kv));
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
//Set some settings that make it all work :)
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
//Execute SalesForce web to lead PHP cURL
$result = curl_exec($ch);
//close cURL connection
curl_close($ch);
if($result=='ok')
{
//echo '<script>alert("Posted -- ")</script>';
}
// Here you can write mysql query to insert data in table.
$insert_tbl_index_page= "insert into tbl_form_data(first_name,last_name,street,city,zip,phone,email)values('$first_name','$last_name','$street','$city','$zip','$phone','$email')";
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.
Add and Disable ETags through .htaccess
? An ETag, or entity tag, is part of HTTP and it provides a unique identifier for the resource being supplied.
:
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>
Though sometimes developer want to be disable ETags from headers. To disable ETags, make sure to include following snippet in your
:
FileETag None
Something like this:
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.
PHP iPhone Scripts
The software development kit for the iPhone is standard Dynamic HTML through the Web browser. Hence, you can use all the familiar HTML, CSS, and Ajax front-end technologies in combination with your choice of back-end technology (PHP, Rails, Java technology—whatever you would like).
Reviewing all that… didn’t you think it was time to develop something specifically for the iPhone now? If you did think then the next question is… what to develop?
Building the application starts with defining some commands that the iPhone remote control will present for you to select.
You use an XML file to define the commands:
<command title="Next Song">
tell application "iTunes" to next track
</command>
<command title="Previous Song">
tell application "iTunes" to back track
</command>
</commands>
The file is a list of
tags. Each tag has a title attribute that defines a human readable title for the command. And the content of the
tag is the AppleScript code to execute when the command is requested.
class Commands
{
private $_commands;
function __construct()
{
$this->_commands = array();
$doc = new DOMDocument();
$doc->load('commands.xml');
$cmds = $doc->getElementsByTagName( 'command' );
foreach( $cmds as $cmd )
{
$this->_commands []= array(
'title' => $cmd->getAttribute('title'),
'command' => $cmd->firstChild->nodeValue
);
}
}
function getCommands()
{
$cmds = array();
foreach( $this->_commands as $cmd )
{
$cmds []= $cmd['title'];
}
return $cmds;
}
function runCommand( $id )
{
$ph = popen( "osascript", "w" );
fwrite( $ph, $this->_commands[$id]['command'] );
fclose( $ph );
}
}
?>
The class starts by loading up the
file. It reads in the file using the
. Then, it finds all the command arguments using
. When it has the
tags as an array, the class loads
member variable with the titles and AppleScript commands.
Two additional methods are defined:
- The
method, which simply returns a list of the names
- The
method, which given an index runs that command using the osascript command-line AppleScript executor.
It’s time to add an interface. Just to make sure everything is working properly, we’ll put a fairly rudimentary Interface on it. This Interface is:
<?php
require_once('commands.php');
$cmds = new Commands();
?>
<?php
$id = 0;
foreach( $cmds->getCommands() as $cmd ) {
?>
<a href="do.php?id=<?php echo($id);?>"><?php echo( $cmd ); ?></a><br/>
<?php $id++; } ?>
</body></html>
class, and then asks it for the lists of commands using the
method. Then, the script builds a set of links to the
page using the command index number and the name of the command that the
class returned.
This would work but it wouldn’t feel like the iPhone. Use the iUI toolkit to extend the Interface. Use this code to do so:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>Mac Controller</title>
<meta name="viewport"
content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;"/>
<style type="text/css" media="screen">@import "iui/iui.css";</style>
<script type="application/x-javascript" src="iui/iui.js"></script>
</head>
<body>
<div class="toolbar">
<h1 id="pageTitle"></h1>
<a id="backButton" class="button" href="#"></a>
</div>
<?php
require_once('commands.php');
$cmds = new Commands();
?>
<ul title="Commands" selected="true">
<?php
$id = 0;
foreach( $cmds->getCommands() as $cmd ) {
?>
<li>
<a href="do.php?id=<?php echo($id);?>"><?php echo( $cmd ); ?></a>
</li>
<?php $id++; } ?>
</ul>
</body></html>
class to get the list of commands. With that list, you build an unordered list
with list item elements for each item
.
page as rendered in Safari
Remember that Safari now runs on both Windows and Mac so no worries if you use Windows. Of course, the PHP that runs this code must be on a Mac to run the
command and the AppleScript code. But you could use system commands if you want to run this on DOS or UNIX systems.
Lastly, create the
file that
references to run the actual commands. This class is:
require_once('commands.php');
$cmds = new Commands();
$cmds->runCommand( $_GET['id'] );
?>
Now, you can use Safari to browse to the page locally and just click the links to check whether the application works. If everything is in order, iTunes will go to the next or previous song depending on what you select.
On your installation, edit the
file, change the User setting to your user name, and change the Group setting to staff. Then reboot your Apache server by running this command line:
With that done, your iTunes Interface will flip back and forth between tracks when you click the links. You can then turn on your iPhone and use the Safari browser to go to your local machine by IP address and access the application, as long as your laptop and your iPhone are on the same Wi-Fi network.
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.
PHP Scripts to Send SMS
Text messaging has become extremely widespread throughout the world to the point where an increasing number of web applications have integrated SMS to notify users of events, etc., directly through their mobile devices.
Example 1
SMS messages are just sent to special email addresses, so they can be sent from server to phone with minimal effort.
The form:
<table width="400">
<tr>
<td align="right" valign="top">From:</td>
<td align="left"><input name="from" type="text" id="from" size="30" /></td>
</tr>
<tr>
<td align="right" valign="top">To:</td>
<td align="left"><input name="to" type="text" id="to" size="30" /></td>
</tr>
<tr>
<td align="right" valign="top">Carrier:</td>
<td align="left"><select name="carrier" id="carrier">
<option value="verizon">Verizon</option>
<option value="tmobile">T-Mobile</option>
<option value="sprint">Sprint</option>
<option value="att">AT&amp;T</option>
<option value="virgin">Virgin Mobile</option>
</select></td>
</tr>
<tr>
<td align="right" valign="top">Message:</td>
<td align="left"><textarea name="message" cols="40" rows="5" id="message"></textarea></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" name="Submit" value="Submit" /></td>
</tr>
</table>
</form>
The handler:
$from = $_POST['from'];
$to = $_POST['to'];
$carrier = $_POST['carrier'];
$message = stripslashes($_POST['message']);
if ((empty($from)) || (empty($to)) || (empty($message))) {
header ("Location: sms_error.php");
}
else if ($carrier == "verizon") {
$formatted_number = $to."@vtext.com";
mail("$formatted_number", "SMS", "$message");
// Currently, the subject is set to "SMS". Feel free to change this.
header ("Location: sms_success.php");
}
else if ($carrier == "tmobile") {
$formatted_number = $to."@tomomail.net";
mail("$formatted_number", "SMS", "$message");
header ("Location: sms_success.php");
}
else if ($carrier == "sprint") {
$formatted_number = $to."@messaging.sprintpcs.com";
mail("$formatted_number", "SMS", "$message");
header ("Location: sms_success.php");
}
else if ($carrier == "att") {
$formatted_number = $to."@txt.att.net";
mail("$formatted_number", "SMS", "$message");
header ("Location: sms_success.php");
}
else if ($carrier == "virgin") {
$formatted_number = $to."@vmobl.com";
mail("$formatted_number", "SMS", "$message");
header ("Location: sms_success.php");
}
?>
Sending a text message to a cell phone through PHP is just a matter of appending the correct suffix to the number and using the
.
Example 2
To send and receive SMS messages from a webpage you need to have scripting support enabled on your webserver. The scripting support can be PHP or ASP. The examples presented here are using PHP.
(The very first step in setting up this system, is to install “your prefer” SMS Gateway to your computer and to verify, that you can send SMS messages from the gateway manually)
Create the HTML Form for SMS sending (To get this solution working you need to save the
file into the
directory of your webserver):
<body>
<h1>My SMS form</h1>
<form method=post action='sendsms.php'>
<table border=0>
<tr>
<td>Recipient</td>
<td><input type='text' name='recipient'></td>
</tr>
<tr>
<td>Message</td>
<td><textarea rows=4 cols=40 name='message'></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type=submit name=submit value=Send></td>
</tr>
</table>
</form>
</body>
</html>
Example 3
This code requires phpmailer class though.
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "ipipi.com"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Port =25;
$mail->Username = "YoureIPIPIUsername"; // SMTP username at ipipi
$mail->Password = "YourPassword"; // SMTP password
$mail->From = "YourUserName@ipipi.com";
$mail->FromName = "Your Name";
$mail->AddAddressTo("DestinationPhoneNumber@sms.ipipi.com", "Receiver Name");
$mail->Subject = "Compression Option goes here - find out more";
$mail->Body = "Your Message";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>
Example 4
The following example PHP script,
, can be used to send an SMS text message via NowSMS with PHP.
function SendSMS ($host, $port, $username, $password, $phoneNoRecip, $msgText) {
/* Parameters:
$host - IP address or host name of the NowSMS server
$port - "Port number for the web interface" of the NowSMS Server
$username - "SMS Users" account on the NowSMS server
$password - Password defined for the "SMS Users" account on the NowSMS Server
$phoneNoRecip - One or more phone numbers (comma delimited) to receive the text message
$msgText - Text of the message
*/
$fp = fsockopen($host, $port, $errno, $errstr);
if (!$fp) {
echo "errno: $errno \n";
echo "errstr: $errstr\n";
return $result;
}
fwrite($fp, "GET /?Phone=" . rawurlencode($phoneNoRecip) . "&Text=" .
rawurlencode($msgText) . " HTTP/1.0\n");
if ($username != "") {
$auth = $username . ":" . $password;
$auth = base64_encode($auth);
fwrite($fp, "Authorization: Basic " . $auth . "\n");
}
fwrite($fp, "\n");
$res = "";
while(!feof($fp)) {
$res .= fread($fp,1);
}
fclose($fp);
return $res;
}
/* This code provides an example of how you would call the SendSMS function from within
a PHP script to send a message. The response from the NowSMS server is echoed back from the script.
$x = SendSMS("127.0.0.1", 8800, "username", "password", "+44999999999", "Test Message");
echo $x;
*/
?>
The SendSMS function is the important part of the example. This is the function that needs to be included in your PHP script.
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.
PHP Scripts Linux
In case you are using Linux SUSE / APACHE server / PHP 5.1 and you don’t know how to start up your PHP script this code might be the solution.
At the bare minimum, you could create an executable script in
named
containing:
/path/to/php /path/to/socket.php &
Since Suse appears to use
scripts to launch apps at start up and you will need to write a custom
script to launch your
script.
Simply put the following line at the beginning of your PHP file.
is the path you installed PHP in Linux.
In case you don’t know where PHP is installed in your Linux. Type the following command:
This will output the PHP path from your Linux.
The output will be something like this:
For example:
<?php
echo "Hello World!";
?>
Make your php script executable by typing:
And then run it:
You’ll see:
Hello World!
We all know PHP scripts don’t actually compile until they are run. However, for instance you want to create a small simple program and compile it to a binary without requiring the PHP binary. You can do that with phpcompiler… but if you just want to run it like a script, you may not need to compile it, but just run it via the command line.
All PHP Scripts on this website are provided by phpscripts4u.com where you can find all the latest PHP code snippets, plugins and libraries.





