PHP $_Server Host Name etc. command line equivalent

September 28th, 2011 by admin

http://php.net/manual/en/function.php-uname.php

string php_uname ([ string $mode = "a" ] )
mode is a single character that defines what information is returned:

  • ‘a’: This is the default. Contains all modes in the sequence “s n r v m”.
  • ‘s’: Operating system name. eg. FreeBSD.
  • ‘n’: Host name. eg. localhost.example.com.
  • ‘r’: Release name. eg. 5.1.2-RELEASE.
  • ‘v’: Version information. Varies a lot between operating systems.
  • ‘m’: Machine type. eg. i386.

Secure HTML form example using PHP htmlentities, passing a token PHP, AJAX submission via jQuery

September 21st, 2011 by admin

<? php
// form page (index.php): initialize a session so that we can set a unique, random, encrypted value to a user session
session_start();
$token = md5(uniqid(rand(), true));
$_SESSION['token'] = $token;
? >
<!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>
<script src=”js/jquery.js” type=”text/javascript”></script>
<script src=”js/jquery.validation.js” type=”text/javascript”></script>
<script src=”js/registerSubmit.js” type=”text/javascript”></script>
</head>
<body>
<!– The Form –>
<form id=”topForm” name=”topForm” method=”post”>
<input type=”hidden” name=”token” id=”token” value=”<? php echo $token; ? >” />
<input name=”emailAddress” id=”emailAddress” value=”Email address” onclick=”if( this.value == ‘Email address’ ){ $(this).val(”); }” onblur=”if( this.value == ”){ $(this).val(‘Email address’); }” />
</form>
</body>
</html>

// The jquery.validation.js class uses a regular expression to stop the process if the email entered isn’t acceptable

;(function($) {
$.validation = {};
$.extend( $.validation, {
email:function(email) {
var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if ( filter.test(email) ) {
return true;
}
return false;
}
});
})(jQuery);

// The registerSubmit.js submits the entered email via AJAX, returning a success or failure message, to our contactSubmit.php script, which handles the submission of the new email to a database

$(document).ready(function() {

$(“#reg-button”).click(function(){
$(“#topForm”).submit();
});

$(“#topForm”).submit(function(event) {
event.preventDefault();
var $form = $( this ),
emailAddress = $form.find( ‘input[name="emailAddress"]‘ ).val(),
token = $form.find( ‘input[name="token"]‘ ).val(),
formaction = $form.attr( ‘action’ );

if($.validation.email(emailAddress)){
$( “#reg-description” ).html (“submitting…”);
$.ajax({
type: “POST”,
url: “contactSubmit.php”,
data: “firstName=” + firstName + “&lastName=” + lastName + “&emailAddress=” + emailAddress + “&token=” + token,
success: function(){
$( “#reg-description” ).html( “Thank you. You have been registered.” );
},
});
}
else{
$( “#emailAddress” ).val (“Please enter a valid email address”);
}
});
});

// contactSubmit.php:  receive the email, check the token, clean the data, pass to a database layer API

<? php
session_start();

set_include_path(‘DBlayerClass’);
require_once(‘EmailContact.php’);

if (isset($_SESSION['token']) && $_POST['token'] == $_SESSION['token']){
if(isset($_POST['emailAddress'])){
$emailAddress = htmlentities($_POST['emailAddress']);
} else { $emailAddress = ”; }

$contact = new EmailContact($emailAddress)

try {
$contact->save();
} catch (Exception $e) {
; // do something
}
//$retrieve = new EmailContact($emailAddress);
//$retrieve->load();
//print_r($retrieve);
//}
? >

PHP retrieving user input when executing a script from the command line

September 16th, 2011 by admin

So either execute the script via the browser, http://someserver/somescript.php
or via the command line >php somescript.php
the example below shows how to support either eventuality

//first we check to see whether the script is being run via the command line, or via a browser

if(defined(‘STDIN‘) ){
echo “Running from CLI” . PHP_EOL;
echo “How many items would you like to batch?”;
$handle = fopen (“php://stdin”,”r”);
$line = fgets($handle);
$batchNumber = trim($line);
// and so on…
}else{
echo “Running from the Browser<br />”;
// and so on…
}

Post via jQuery across domains (in this case to a Zend Controller and subsequent view) and display the results

August 25th, 2011 by admin

the jQuery posting page, in brief:

<document…>
<head>
<script src=”http://code.jquery.com/jquery-1.5.js”></script>
</head>
<body>
<form id=”enewsform” name=”enewsform” action=”http://componentserver/controllername/post” method=”post”>
<input type=”text” name=”email” id=”email” value=”<?php echo $_REQUEST['email']; ?>” />
<a id=”submitsubscribe” title=”Subscribe” href=”javascript:{}” onclick=”return false;”>sign up</a>
</form>
<script src=”http://components.someserver.com/js/jquery.validation.js” type=”text/javascript”></script>
<script>
$(‘#submitsubscribe’).click(function(){
$(“#enewsform”).submit();
});

$(“#enewsform”).submit(function(event) {
event.preventDefault();
$( “#result” ).html (“submitting…”);
var $form = $( this ),
term = $form.find( ‘input[name="email"]‘ ).val(),
url = $form.attr( ‘action’ );

if($.validation.email(term)){
$.getJSON(url + “?email=” + term + “&jsoncallback=?”, function(data){
$( “#result” ).html( data['error'] );
if(data['error']== “errormatchingstring”){
$( “#result” ).html( “Seems like it worked” );
}else{ $( “#result” ).html(data['error']); }
});
}
else{ $( “#result” ).html (“Please enter your email address”); }

});
</script>

<div id=”result”></div>

// the component Zend controller in question receives the post, does whatever it does, renders its view, and we access the results from the view (don’t forget to pass data to the view with something like this:
$this-> view-> viewresult = $this-> viewData;)

<? php
echo $_REQUEST['jsoncallback'] . ‘(‘ . json_encode($this-> viewresult) . ‘)’;
? >

Bronto API PHP Class to Send a Contact a particular Message (Zend Helper)

August 25th, 2011 by admin

< ? php
class
Zend_Controller_Action_Helper_BrontoSendMessage extends Zend_Controller_Action_Helper_Abstract {

public $message;
public $client;
public $viewData;
public $list;
public $now = “date(‘c’)”;
public $recipientObject;
public $email;
public $contact;
public $contactId;

private $fromName = ‘WHATEVERYOUWOULDLIKE’;
private $fromEmail = ‘YOU@YOURMAIL.COM’;

public function login(){
ini_set(“soap.wsdl_cache_enabled”, “0″);
date_default_timezone_set(‘America/New_York’);

$wsdl = “https://api.bronto.com/v4?wsdl”;
$url = “https://api.bronto.com/v4″;

$this-> client = new SoapClient($wsdl, array(‘trace’ => 1, ‘encoding’ => ‘UTF-8′));
$this-> client->__setLocation($url);

// Login
$token = “YOUR BRONTO TOKEN HERE”;
$sessionId = $this-> client->login(array(“apiToken” => $token))->return;
if (!$sessionId) {
return “Login failed”;
}
$this-> client->__setSoapHeaders(array(new SoapHeader(“http://api.bronto.com/v4″,
‘sessionHeader’,
array(‘sessionId’ => $sessionId))));

$this-> viewData['login'] = “logged in”;
}

public function setContact($email){
$this-> email = $email;

$filter = array(‘email’ => array(array(‘operator’ => ‘EqualTo’,'value’ => $this-> email)));

$this-> contact = $this-> client->readContacts(array(‘pageNumber’ => 1,
‘includeLists’ => true,
‘filter’ => $filter,
));
if(!isset($this->contact->return->id))
{
//return ‘Email not subscribed’;
}
else
{
$this-> contactId = $this->contact->return->id;
//return $this->contactId;
}

$this-> recipientObject = array(‘type’ => ‘contact’, ‘id’ => $this->contactId);
}

public function setDelivery($messageid){
$delivery = array(‘start’ => date(‘c’),
‘messageId’ => $messageid,
‘fromName’ => $this-> fromName,
‘fromEmail’ => $this-> fromEmail,
‘recipients’ => array($this-> recipientObject),
);

$this->client->addDeliveries(array($delivery));
}
}
? >

called from another Zend Controller as a helper in this fashion:

$this-> _helper-> BrontoSendMessage->login();
$this-> _helper-> BrontoSendMessage->setContact($this-> email);
$this-> _helper-> BrontoSendMessage->setDelivery($this-> messageid);