PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Saisie d'un message par PHP graphique mais considere comme vide !? » 22-03-2014 08:57:38

ah voila par print_r($_POST)

Array ( [message] => zxcvzxcvzxcvzxcvzxcvzxcvzxcvzxcv [remLen1] => 75 [Submit] => send )
idem pour print_r($_SESSION)

c'est ce que j'ai saisi dans le message !

Ensuite il y a "Could not connect to server. Please check the passphrase. You are being redirected..." mais je n'ai pas mis de passphrase !

#2 Re : Forum Général PHP » Saisie d'un message par PHP graphique mais considere comme vide !? » 22-03-2014 08:57:38

Bonjour Jc,
Desole mais je n'arrivais pas a obtenir un resultat avec print_r, je mettais donc une trace avec l'emission d'un mail a mon adresse pour savoir s'il passait par la.
Donc, j'ai maintenant pu inclure le contenu de $_POST ainsi que celui de $_SESSION au moyen du code suivant,

////////////////////////////////////////////////
////////////////////////////////////////////////
$mymessage = date('l jS \of F Y H:i:s') . "\n" .
  $_POST . "\n" .
  $_SESSION;
$to      = 'mobilette@me.com';
$subject = '$_POST et $_SESSION';
$message = $mymessage;
$headers = 'From: mobilette@me.com' . "\r\n" .
    'Reply-To: mobilette@me.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
////////////////////////////////////////////////
////////////////////////////////////////////////
 

les deux donne comme resultat donnent "Array"

#3 Re : Forum Général PHP » Erreur de pathname ? » 21-03-2014 17:11:22

l'adresse absolue de apns.og est '/hosting/customers/www.mon-site.ch/gokyo_pns/apns.log'
Alors pourquoi est-ce que ca va dans '/hosting/customers/www.mon-site.ch/php_errors' ?
pfffff...

#4 Re : Forum Général PHP » Saisie d'un message par PHP graphique mais considere comme vide !? » 22-03-2014 08:57:38

Maljuna Kris a écrit :
Donald a écrit :

où est-ce que je devrais recevoir l'echo de $_POST ?

print_r($_POST) est censé envoyé le contenu de $_POST dans le flux HTML.

Donc ça devrait s'afficher dans le navigateur, si tu viens bien dans Simplepush.php via le formulaire.

Oui, je passe bel et bien dans Simplepush.php, car je recois bien le mail dont j'ai insere la commande ainsi :

<?php
session_start();
//$_SESSION['passphrase'] = $_POST['passphrase'];
$_SESSION['message'] = $_POST['message'];

// Put your private key's passphrase here if needed:
//$passphrase = $_POST['passphrase'];

// Put your alert message here:
$message = $_POST['message'];

if(strlen($message) < 1) {
 
  header ("Refresh: 4; sendMessage.php");  
  exit("<span style=\"font-family: Verdana, Geneva, sans-serif; font-size: 14px;\">You must enter a message! You are being redirected...</span>" . PHP_EOL);
}
/*
$heure = date("H\hi");
$mymessage = 'il est ',$heure;
*/
$to      = 'mobilette@me.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: mobilette@me.com' . "\r\n" .
    'Reply-To: mobilette@me.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

////////////////////////////////////////////////////////////////////////////////
 

#5 Re : Forum Général PHP » Saisie d'un message par PHP graphique mais considere comme vide !? » 22-03-2014 08:57:38

Bonjour TSE,
en fait, c'est deja comme ca : <form name="form1" method="post" action="simplepush.php">
le  vient du forum pour le faire resortir ! Mais ca ne fonctionne toujours pas :-/
Desole

#6 Re : Forum Général PHP » Saisie d'un message par PHP graphique mais considere comme vide !? » 22-03-2014 08:57:38

Voila, j'ai fait ca ainsi mais ca ne me donne rien de plus, je n'ai pas de message d'"erreur" ?

<?php
session_start();
//$_SESSION['passphrase'] = $_POST['passphrase'];
$_SESSION['message'] = $_POST['message'];

// Put your private key's passphrase here if needed:
//$passphrase = $_POST['passphrase'];

// Put your alert message here:
$message = $_POST['message'];


print_r($_POST);


/*
if(strlen($message) < 1) {
 
  header ("Refresh: 4; sendMessage.php");  
  exit("<span style=\"font-family: Verdana, Geneva, sans-serif; font-size: 14px;\">You must enter a message! You are being redirected...</span>" . PHP_EOL);
}
*/
////////////////////////////////////////////////////////////////////////////////
 

ou est-ce que je devrais recevoir l'echo de $_POST ?

#7 Re : Forum Général PHP » Message de Donald transféré dans un nouveau post. » 21-03-2014 09:02:54

Oui oui, desole pour le bruit et merci de la peine que tu t'es donnee jusqu'ici.
Tres bonne journee

#8 Re : Forum Général PHP » Erreur de pathname ? » 21-03-2014 17:11:22

Oui je comprends qu'il est difficile de m'orienter avec si peu d'infos.
A tout hasard je me permets de t'adresser le code complet du scripte concerne : "class_APNS.php"
tout en sachant que tu n'as pas que ca a faire :-/

<?PHP

/**
 * @category Apple Push Notification Service using PHP & MySQL
 * @package APNS
 * @author Peter Schmalfeldt <manifestinteractive@gmail.com>
 * @license http://www.apache.org/licenses/LICENSE-2.0
 * @link http://code.google.com/p/easyapns/
 */

/**
 * Begin Document
 */

class APNS {

  /**
  * Connection to MySQL
  *
  * @var string
  * @access private
  */
  private $db;

  /**
  * Array of APNS Connection Settings
  *
  * @var array
  * @access private
  */
  private $apnsData;

  /**
  * Whether to trigger errors
  *
  * @var bool
  * @access private
  */
  private $showErrors = true;

  /**
  * Whether APNS should log errors
  *
  * @var bool
  * @access private
  */
  private $logErrors = true;

  /**
  * Log path for APNS errors
  *
  * @var string
  * @access private
  */
  private $logPath = '/hosting/customers/www.mon-site.ch/gokyo_pns/apns.log';

  /**
  * Max files size of log before it is truncated. 1048576 = 1MB.  Added incase you do not add to a log
  * rotator so this script will not accidently make gigs of error logs if there are issues with install
  *
  * @var int
  * @access private
  */
  private $logMaxSize = 1048576; // max log size before it is truncated

  /**
  * Absolute path to your Production Certificate
  *
  * @var string
  * @access private
  */
  private $certificate = '/hosting/customers/www.mon-site.ch/gokyo_pns/apns-prod.pem';

  /**
  * Apples Production APNS Gateway
  *
  * @var string
  * @access private
  */
  private $ssl = 'ssl://gateway.push.apple.com:2195';

  /**
  * Apples Production APNS Feedback Service
  *
  * @var string
  * @access private
  */
  private $feedback = 'ssl://feedback.push.apple.com:2196';

  /**
  * Absolute path to your Development Certificate
  *
  * @var string
  * @access private
  */
  private $sandboxCertificate = '/hosting/customers/www.mon-site.ch/gokyo_pns/apns-dev.pem'; // change this to your development certificate absolute path

  /**
  * Apples Sandbox APNS Gateway
  *
  * @var string
  * @access private
  */
  private $sandboxSsl = 'ssl://gateway.sandbox.push.apple.com:2195';

  /**
  * Apples Sandbox APNS Feedback Service
  *
  * @var string
  * @access private
  */
  private $sandboxFeedback = 'ssl://feedback.sandbox.push.apple.com:2196';

  /**
  * Message to push to user
  *
  * @var string
  * @access private
  */
  private $message;

  /**
   * Constructor.
   *
   * Initializes a database connection and perfoms any tasks that have been assigned.
   *
   * Create a new PHP file named apns.php on your website...
   *
   * <code>
   * <?php
   * $db = new DbConnect();
   * $db->show_errors();
   * $apns = new APNS($db);
   * ?>
   * </code>
   *
   * Your iPhone App Delegate.m file will point to a PHP file with this APNS Object.  The url will end up looking something like:
   * https://secure.yourwebsite.com/apns.php?task=register&appname=My%20App&appversion=1.0.1&deviceuid=e018c2e46efe185d6b1107aa942085a59bb865d9&devicetoken=43df9e97b09ef464a6cf7561f9f339cb1b6ba38d8dc946edd79f1596ac1b0f66&devicename=My%20Awesome%20iPhone&devicemodel=iPhone&deviceversion=3.1.2&pushbadge=enabled&pushalert=disabled&pushsound=enabled
     *
     * @param object $db Database Object
   * @param array $args Optional arguments passed through $argv or $_GET
     * @access  public
     */
  function __construct($db, $args=NULL) {
    $this->db = $db;
    $this->checkSetup();
    $this->apnsData = array(
      'production'=>array(
        'certificate'=>$this->certificate,
        'ssl'=>$this->ssl,
        'feedback'=>$this->feedback
      ),
      'sandbox'=>array(
        'certificate'=>$this->sandboxCertificate,
        'ssl'=>$this->sandboxSsl,
        'feedback'=>$this->sandboxFeedback
      )
    );
    if(!empty($args)){
      switch($args['task']){
        case "register":
          $this->_registerDevice(
            $args['appname'],
            $args['appversion'],
            $args['deviceuid'],
            $args['devicetoken'],
            $args['devicename'],
            $args['devicemodel'],
            $args['deviceversion'],
            $args['pushbadge'],
            $args['pushalert'],
            $args['pushsound']
          );
          break;

        case "fetch";
          $this->_fetchMessages();
          break;

        default:
          echo "No APNS Task Provided...\n";
          break;
      }
    }
  }

  /**
   * Check Setup
   *
   * Check to make sure that the certificates are available and also provide a notice if they are not as secure as they could be.
   *
     * @access private
     */
  private function checkSetup(){
    if(!file_exists($this->certificate)) $this->_triggerError('ERROR: Missing Production Certificate.', E_USER_ERROR);
    if(!file_exists($this->sandboxCertificate)) $this->_triggerError('ERROR: Missing Sandbox Certificate.', E_USER_ERROR);

    clearstatcache();
      $certificateMod = substr(sprintf('%o', fileperms($this->certificate)), -3);
    $sandboxCertificateMod = substr(sprintf('%o', fileperms($this->sandboxCertificate)), -3);

    if($certificateMod>644)  $this->_triggerError('NOTICE: Production Certificate is insecure! Suggest chmod 644.');
    if($sandboxCertificateMod>644)  $this->_triggerError('NOTICE: Sandbox Certificate is insecure! Suggest chmod 644.');
  }

  /**
   * Register Apple device
   *
   * Using your Delegate file to auto register the device on application launch.  This will happen automatically from the Delegate.m file in your iPhone Application using our code.
   *
   * @param sting $appname Application Name
   * @param sting $appversion Application Version
   * @param sting $deviceuid 40 charater unique user id of Apple device
   * @param sting $devicetoken 64 character unique device token tied to device id
   * @param sting $devicename User selected device name
   * @param sting $devicemodel Modle of device 'iPhone' or 'iPod'
   * @param sting $deviceversion Current version of device
   * @param sting $pushbadge Whether Badge Pushing is Enabled or Disabled
   * @param sting $pushalert Whether Alert Pushing is Enabled or Disabled
   * @param sting $pushsound Whether Sound Pushing is Enabled or Disabled
     * @access private
     */
  private function _registerDevice($appname, $appversion, $deviceuid, $devicetoken, $devicename, $devicemodel, $deviceversion, $pushbadge, $pushalert, $pushsound){

    if(strlen($appname)==0) $this->_triggerError('ERROR: Application Name must not be blank.', E_USER_ERROR);
    else if(strlen($appversion)==0) $this->_triggerError('ERROR: Application Version must not be blank.', E_USER_ERROR);
    else if(strlen($deviceuid)!=40) $this->_triggerError('ERROR: Device ID must be 40 characters in length.', E_USER_ERROR);
    else if(strlen($devicetoken)!=64) $this->_triggerError('ERROR: Device Token must be 64 characters in length.', E_USER_ERROR);
    else if(strlen($devicename)==0) $this->_triggerError('ERROR: Device Name must not be blank.', E_USER_ERROR);
    else if(strlen($devicemodel)==0) $this->_triggerError('ERROR: Device Model must not be blank.', E_USER_ERROR);
    else if(strlen($deviceversion)==0) $this->_triggerError('ERROR: Device Version must not be blank.', E_USER_ERROR);
    else if($pushbadge!='disabled' && $pushbadge!='enabled') $this->_triggerError('ERROR: Push Badge must be either Enabled or Disabled.', E_USER_ERROR);
    else if($pushalert!='disabled' && $pushalert!='enabled') $this->_triggerError('ERROR: Push Alert must be either Enabled or Disabled.', E_USER_ERROR);
    else if($pushsound!='disabled' && $pushsound!='enabled') $this->_triggerError('ERROR: Push Sount must be either Enabled or Disabled.', E_USER_ERROR);

    $appname = $this->db->prepare($appname);
    $appversion = $this->db->prepare($appversion);
    $deviceuid = $this->db->prepare($deviceuid);
    $devicetoken = $this->db->prepare($devicetoken);
    $devicename = $this->db->prepare($devicename);
    $devicemodel = $this->db->prepare($devicemodel);
    $deviceversion = $this->db->prepare($deviceversion);
    $pushbadge = $this->db->prepare($pushbadge);
    $pushalert = $this->db->prepare($pushalert);
    $pushsound = $this->db->prepare($pushsound);

    // store device for push notifications
    $this->db->query("SET NAMES 'utf8';"); // force utf8 encoding if not your default
    $sql = "INSERT INTO `apns_devices`
        VALUES (
          NULL,
          '{$appname}',
          '{$appversion}',
          '{$deviceuid}',
          '{$devicetoken}',
          '{$devicename}',
          '{$devicemodel}',
          '{$deviceversion}',
          '{$pushbadge}',
          '{$pushalert}',
          '{$pushsound}',
          'sandbox',    /* 'production' ou 'sandbox' */
          'active',
          NOW(),
          NOW()
        )
        ON DUPLICATE KEY UPDATE
        `devicetoken`='{$devicetoken}',
        `devicename`='{$devicename}',
        `devicemodel`='{$devicemodel}',
        `deviceversion`='{$deviceversion}',
        `pushbadge`='{$pushbadge}',
        `pushalert`='{$pushalert}',
        `pushsound`='{$pushsound}',
        `status`='active',
        `modified`=NOW();";
    $this->db->query($sql);
  }

  /**
   * Unregister Apple device
   *
   * This gets called automatically when Apple's Feedback Service responds with an invalid token.
   *
   * @param sting $token 64 character unique device token tied to device id
     * @access private
     */
  private function _unregisterDevice($token){
    $sql = "UPDATE `apns_devices`
        SET `status`='uninstalled'
        WHERE `devicetoken`='{$token}'
        LIMIT 1;";
    $this->db->query($sql);
  }

  /**
   * Fetch Messages
   *
   * This gets called by a cron job that runs as often as you want.  You might want to set it for every minute.
   *
   * @param sting $token 64 character unique device token tied to device id
     * @access private
     */
  private function _fetchMessages(){
    // only send one message per user... oldest message first
    $sql = "SELECT
        `apns_messages`.`pid`,
        `apns_messages`.`message`,
        `apns_devices`.`devicetoken`,
        `apns_devices`.`development`

        FROM `apns_messages`

        LEFT JOIN `apns_devices` ON
        `apns_devices`.`pid` = `apns_messages`.`fk_device`

        WHERE `apns_messages`.`status`='queued'

        AND `apns_messages`.`delivery` <= NOW()

        AND `apns_devices`.`status`='active'

        GROUP BY `apns_messages`.`fk_device`

        ORDER BY `apns_messages`.`created` ASC

        LIMIT 100;";

    if($result = $this->db->query($sql)){
      if($result->num_rows){
        while($row = $result->fetch_array(MYSQLI_ASSOC)){
          $pid = $this->db->prepare($row['pid']);
          $message = stripslashes($this->db->prepare($row['message']));
          $token = $this->db->prepare($row['devicetoken']);
          $development = $this->db->prepare($row['development']);
          $this->_pushMessage($pid, $message, $token, $development);
        }
      }
    }
  }

  /**
   * Push APNS Messages
   *
   * This gets called automatically by _fetchMessages.  This is what actually deliveres the message.
   *
   * @param int $pid
   * @param sting $message JSON encoded string
   * @param sting $token 64 character unique device token tied to device id
   * @param sting $development Which SSL to connect to, Sandbox or Production
     * @access private
     */
  private function _pushMessage($pid, $message, $token, $development){
    if(strlen($pid)==0) $this->_triggerError('ERROR: Missing message pid.', E_USER_ERROR);
    if(strlen($message)==0) $this->_triggerError('ERROR: Missing message.', E_USER_ERROR);
    if(strlen($token)==0) $this->_triggerError('ERROR: Missing message token.', E_USER_ERROR);
    if(strlen($development)==0) $this->_triggerError('ERROR: Missing development status.', E_USER_ERROR);

    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', $this->apnsData[$development]['certificate']);
    $fp = stream_socket_client($this->apnsData[$development]['ssl'], $error, $errorString, 60, STREAM_CLIENT_CONNECT, $ctx);

    if(!$fp){
      $this->_messageFailed($pid);
      $this->_triggerError("NOTICE: Failed to connect to APNS: {$error} {$errorString}.");
    }
    else {
      $msg = chr(0).pack("n",32).pack('H*',$token).pack("n",strlen($message)).$message;
      $fwrite = fwrite($fp, $msg);
      if(!$fwrite) {
        $this->_pushFailed($pid);
        $this->_triggerError("ERROR: Failed writing to stream.", E_USER_ERROR);
      }
      else {
        $this->_pushSuccess($pid);
      }
    }
    fclose($fp);

    $this->_checkFeedback($development);
  }

  /**
   * Fetch APNS Messages
   *
   * This gets called automatically by _pushMessage.  This will check with APNS for any invalid tokens and disable them from receiving further notifications.
   *
   * @param sting $development Which SSL to connect to, Sandbox or Production
     * @access private
     */
  private function _checkFeedback($development){
    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', $this->apnsData[$development]['certificate']);
    stream_context_set_option($ctx, 'ssl', 'verify_peer', false);
    $fp = stream_socket_client($this->apnsData[$development]['feedback'], $error, $errorString, 60, STREAM_CLIENT_CONNECT, $ctx);

    if(!$fp) $this->_triggerError("NOTICE: Failed to connect to device: {$error} {$errorString}.");
    while ($devcon = fread($fp, 38)){
      $arr = unpack("H*", $devcon);
      $rawhex = trim(implode("", $arr));
      $token = substr($rawhex, 12, 64);
      if(!empty($token)){
        $this->_unregisterDevice($token);
        $this->_triggerError("NOTICE: Unregistering Device Token: {$token}.");
      }
    }
    fclose($fp);
  }

  /**
   * APNS Push Success
   *
   * This gets called automatically by _pushMessage.  When no errors are present, then the message was delivered.
   *
   * @param int $pid Primary ID of message that was delivered
     * @access private
     */
  private function _pushSuccess($pid){
    $sql = "UPDATE `apns_messages`
        SET `status`='delivered'
        WHERE `pid`={$pid}
        LIMIT 1;";
    $this->db->query($sql);
  }

  /**
   * APNS Push Failed
   *
   * This gets called automatically by _pushMessage.  If an error is present, then the message was NOT delivered.
   *
   * @param int $pid Primary ID of message that was delivered
     * @access private
     */
  private function _pushFailed($pid){
    $sql = "UPDATE `apns_messages`
        SET `status`='failed'
        WHERE `pid`={$pid}
        LIMIT 1;";
    $this->db->query($sql);
  }

  /**
   * Trigger Error
   *
   * Use PHP error handling to trigger User Errors or Notices.  If logging is enabled, errors will be written to the log as well.
   * Disable on screen errors by setting showErrors to false;
   *
   * @param string $error Error String
   * @param int $type Type of Error to Trigger
     * @access private
     */
  private function _triggerError($error, $type=E_USER_NOTICE){
    $backtrace = debug_backtrace();
    $backtrace = array_reverse($backtrace);
    $error .= "\n";
    $i=1;
    foreach($backtrace as $errorcode){
      $file = ($errorcode['file']!='') ? "-> File: ".basename($errorcode['file'])." (line ".$errorcode['line'].")":"";
      $error .= "\n\t".$i.") ".$errorcode['class']."::".$errorcode['function']." {$file}";
      $i++;
    }
    $error .= "\n\n";
    if($this->logErrors && file_exists($this->logPath)){
      if(filesize($this->logPath) > $this->logMaxSize) $fh = fopen($this->logPath, 'w');
      else $fh = fopen($this->logPath, 'a');
      fwrite($fh, $error);
      fclose($fh);
    }
    if($this->showErrors) trigger_error($error, $type);
  }

  /**
   * JSON Encode
   *
   * Some servers do not have json_encode, so use this instead.
   *
   * @param array $array Data to convert to JSON string.
     * @access private
   * @return string
     */
  private function _jsonEncode($array=false){
    if(is_null($array)) return 'null';
    if($array === false) return 'false';
    if($array === true) return 'true';
    if(is_scalar($array)){
      if(is_float($array)){
        return floatval(str_replace(",", ".", strval($array)));
      }
      if(is_string($array)){
        static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
        return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $array) . '"';
      }
      else return $array;
    }
    $isList = true;
    for($i=0, reset($array); $i<count($array); $i++, next($array)){
      if(key($array) !== $i){
        $isList = false;
        break;
      }
    }
    $result = array();
    if($isList){
      foreach($array as $v) $result[] = json_encode($v);
      return '[' . join(',', $result) . ']';
    }
    else {
      foreach ($array as $k => $v) $result[] = json_encode($k).':'.json_encode($v);
      return '{' . join(',', $result) . '}';
    }
  }

  /**
   * Start a New Message
   *
   * <code>
   * <?php
   * $db = new DbConnect();
   * $db->show_errors();
   * $apns = new APNS($db); // CREATE THE OBJECT
   * $apns->newMessage(1, '2010-01-01 00:00:00'); // START A MESSAGE... SECOND ARGUMENT ACCEPTS ANY DATETIME STRING
   * $apns->addMessageAlert('You got your emails.'); // ALERTS ARE TRICKY... SEE EXAMPLES
   * $apns->addMessageBadge(9); // PASS A NUMBER
   * $apns->addMessageSound('bingbong.aiff'); // ADD A SOUND
   * $apns->queueMessage(); // AND SEND IT ON IT'S WAY
   * ?>
   * </code>
   *
   * @param int $fk_device Foreign Key to the device you want to send a message to.
   * @param string $delivery Possible future date to send the message.
     * @access public
     */
  public function newMessage($fk_device, $delivery=NULL){
    if(strlen($fk_device)==0) $this->_triggerError('ERROR: Missing message fk_device.', E_USER_ERROR);
    if(isset($this->message)){
      unset($this->message);
      $this->_triggerError('NOTICE: An existing message already created but not delivered. The previous message has been removed. Use queueMessage() to complete a message.');
    }
    $this->message = array();
    $this->message['aps'] = array();
    $this->message['send']['to'] = $fk_device;
    $this->message['send']['when'] = $delivery;
  }

  /**
   * Queue Message for Delivery
   *
   * <code>
   * <?php
   * $db = new DbConnect();
   * $db->show_errors();
   * $apns = new APNS($db);
   * $apns->newMessage(1, '2010-01-01 00:00:00');
   * $apns->addMessageAlert('You got your emails.');
   * $apns->addMessageBadge(9);
   * $apns->addMessageSound('bingbong.aiff');
   * $apns->queueMessage(); // ADD THE MESSAGE TO QUEUE
   * ?>
   * </code>
   *
     * @access public
     */
  public function queueMessage(){
    // check to make sure a message was created
    if(!isset($this->message)) $this->_triggerError('NOTICE: You cannot Queue a message that has not been created. Use newMessage() to create a new message.');

    // fetch the users id and check to make sure they have certain notifications enabled before trying to send anything to them.
    $deliver = false;
    $sql = "SELECT `pushbadge`, `pushalert`, `pushsound` FROM `apns_devices` WHERE `pid`={$this->message['send']['to']} AND `status`='active' LIMIT 1;";
    if($result = $this->db->query($sql)){
      if($result->num_rows){
        while($row = $result->fetch_array(MYSQLI_ASSOC)){
          $pushbadge = $this->db->prepare($row['pushbadge']);
          $pushalert = $this->db->prepare($row['pushalert']);
          $pushsound = $this->db->prepare($row['pushsound']);
        }
        $deliver = true;
      }
    }
    // has user disabled messages?
    if($pushbadge=='disabled' && $pushalert=='disabled' && $pushsound=='disabled') $deliver = false;
    if(!$deliver) {
      $this->_triggerError('NOTICE: This user has either disabled push notifications, or does not exist in the database.');
      unset($this->message);
    }
    else {
      // get sending information
      $to = $this->message['send']['to'];
      $when = $this->message['send']['when'];
      unset($this->message['send']);

      // remove notifications that user will not recieve.
      if($pushbadge=='disabled'){
        $this->_triggerError('NOTICE: This user has disabled Push Badge Notifications, Badge will not be delivered.');
        unset($this->message['aps']['badge']);
      }
      if($pushalert=='disabled'){
        $this->_triggerError('NOTICE: This user has disabled Push Alert Notifications, Alert will not be delivered.');
        unset($this->message['aps']['alert']);
      }
      if($pushsound=='disabled'){
        $this->_triggerError('NOTICE: This user has disabled Push Sound Notifications, Sound will not be delivered.');
        unset($this->message['aps']['sound']);
      }

      $fk_device = $this->db->prepare($to);
      $message = $this->_jsonEncode($this->message);
      $message = $this->db->prepare($message);
      $delivery = (!empty($when)) ? "'{$when}'":'NOW()';

      $this->db->query("SET NAMES 'utf8';"); // force utf8 encoding if not your default
      $sql = "INSERT INTO `apns_messages`
          VALUES (
            NULL,
            '{$fk_device}',
            '{$message}',
            {$delivery},
            'queued',
            NOW(),
            NOW()
          );";
      $this->db->query($sql);
      unset($this->message);
    }
  }

  /**
   * Add Message Alert
   *
   * <code>
   * <?php
   * $db = new DbConnect();
   * $db->show_errors();
   * $apns = new APNS($db);
   *
   * // SIMPLE ALERT
   * $apns->newMessage(1, '2010-01-01 00:00:00');
   * $apns->addMessageAlert('Message received from Bob'); // MAKES DEFAULT BUTTON WITH BOTH 'Close' AND 'View' BUTTONS
   * $apns->queueMessage();
   *
   * // CUSTOM 'View' BUTTON
   * $apns->newMessage(1, '2010-01-01 00:00:00');
   * $apns->addMessageAlert('Bob wants to play poker', 'PLAY'); // MAKES THE 'View' BUTTON READ 'PLAY'
   * $apns->queueMessage();
   *
   * // NO 'View' BUTTON
   * $apns->newMessage(1, '2010-01-01 00:00:00');
   * $apns->addMessageAlert('Bob wants to play poker', ''); // MAKES AN ALERT WITH JUST AN 'OK' BUTTON
   * $apns->queueMessage();
   *
   * // CUSTOM LOCALIZATION STRING FOR YOUR APP
   * $apns->newMessage(1, '2010-01-01 00:00:00');
   * $apns->addMessageAlert(NULL, NULL, 'GAME_PLAY_REQUEST_FORMAT', array('Jenna', 'Frank'));
   * $apns->queueMessage();
   * ?>
   * </code>
   *
   * @param int $number
     * @access public
     */
  public function addMessageAlert($alert=NULL, $actionlockey=NULL, $lockey=NULL, $locargs=NULL){
    if(!$this->message) $this->_triggerError('ERROR: Must use newMessage() before calling this method.', E_USER_ERROR);
    if(isset($this->message['aps']['alert'])){
      unset($this->message['aps']['alert']);
      $this->_triggerError('NOTICE: An existing alert was already created but not delivered. The previous alert has been removed.');
    }
    switch(true){
      case (!empty($alert) && empty($actionlockey) && empty($lockey) && empty($locargs)):
        if(!is_string($alert)) $this->_triggerError('ERROR: Invalid Alert Format. See documentation for correct procedure.', E_USER_ERROR);
        $this->message['aps']['alert'] = (string)$alert;
        break;

      case (!empty($alert) && !empty($actionlockey) && empty($lockey) && empty($locargs)):
        if(!is_string($alert)) $this->_triggerError('ERROR: Invalid Alert Format. See documentation for correct procedure.', E_USER_ERROR);
        else if(!is_string($actionlockey)) $this->_triggerError('ERROR: Invalid Action Loc Key Format. See documentation for correct procedure.', E_USER_ERROR);
        $this->message['aps']['alert']['body'] = (string)$alert;
        $this->message['aps']['alert']['action-loc-key'] = (string)$actionlockey;
        break;

      case (empty($alert) && empty($actionlockey) && !empty($lockey) && !empty($locargs)):
        if(!is_string($lockey)) $this->_triggerError('ERROR: Invalid Loc Key Format. See documentation for correct procedure.', E_USER_ERROR);
        $this->message['aps']['alert']['loc-key'] = (string)$lockey;
        $this->message['aps']['alert']['loc-args'] = $locargs;
        break;

      default:
        $this->_triggerError('ERROR: Invalid Alert Format. See documentation for correct procedure.', E_USER_ERROR);
        break;
    }
  }

  /**
   * Add Message Badge
   *
   * <code>
   * <?php
   * $db = new DbConnect();
   * $db->show_errors();
   * $apns = new APNS($db);
   * $apns->newMessage(1, '2010-01-01 00:00:00');
   * $apns->addMessageBadge(9); // HAS TO BE A NUMBER
   * $apns->queueMessage();
   * ?>
   * </code>
   *
   * @param int $number
     * @access public
     */
  public function addMessageBadge($number=NULL){
    if(!$this->message) $this->_triggerError('ERROR: Must use newMessage() before calling this method.', E_USER_ERROR);
    if($number) {
      if(isset($this->message['aps']['badge'])) $this->_triggerError('NOTICE: Message Badge has already been created. Overwriting with '.$number.'.');
      $this->message['aps']['badge'] = (int)$number;
    }
  }

  /**
   * Add Message Custom
   *
   * <code>
   * <?php
   * $db = new DbConnect();
   * $db->show_errors();
   * $apns = new APNS($db);
   * $apns->newMessage(1, '2010-01-01 00:00:00');
   * $apns->addMessageCustom('acme1', 42); // CAN BE NUMBER...
   * $apns->addMessageCustom('acme2', 'foo'); // ... STRING
   * $apns->addMessageCustom('acme3', array('bang', 'whiz')); // OR ARRAY
   * $apns->queueMessage();
   * ?>
   * </code>
   *
   * @param string $key Name of Custom Object you want to pass back to your iPhone App
   * @param mixed $value Mixed Value you want to pass back.  Can be int, bool, string, or array.
     * @access public
     */
  public function addMessageCustom($key=NULL, $value=NULL){
    if(!$this->message) $this->_triggerError('ERROR: Must use newMessage() before calling this method.', E_USER_ERROR);
    if(!empty($key) && !empty($value)) {
      if(isset($this->message[$key])){
        unset($this->message[$key]);
        $this->_triggerError('NOTICE: This same Custom Key already exists and has not been delivered. The previous values have been removed.');
      }
      if(!is_string($key)) $this->_triggerError('ERROR: Invalid Key Format. Key must be a string. See documentation for correct procedure.', E_USER_ERROR);
      $this->message[$key] = $value;
    }
  }

  /**
   * Add Message Sound
   *
   * <code>
   * <?php
   * $db = new DbConnect();
   * $db->show_errors();
   * $apns = new APNS($db);
   * $apns->newMessage(1, '2010-01-01 00:00:00');
   * $apns->addMessageSound('bingbong.aiff'); // STRING OF FILE NAME
   * $apns->queueMessage();
   * ?>
   * </code>
   *
   * @param string $sound Name of sound file in your Resources Directory
     * @access public
     */
  public function addMessageSound($sound=NULL){
    if(!$this->message) $this->_triggerError('ERROR: Must use newMessage() before calling this method.', E_USER_ERROR);
    if($sound) {
      if(isset($this->message['aps']['sound'])) $this->_triggerError('NOTICE: Message Sound has already been created. Overwriting with '.$sound.'.');
      $this->message['aps']['sound'] = (string)$sound;
    }
  }
}
?>

#9 Re : Forum Général PHP » Saisie d'un message par PHP graphique mais considere comme vide !? » 22-03-2014 08:57:38

Salut,
Merci de consacrer du temps a ce petit probleme.
J'ai deux script PHP, "SendMessage.php" et "Simplepush.php".
SendMessage.php affiche le formulaire de saisie que l'on voit sur ma contribution precedente. Je saisi un texte et clique sur le bouton "Send".
Celui-ci le fait sauter sur le script "Simplepush.php" qui devrait envoyer le message mais... au lieu de ca, je recois un message d'erreur me
disant que je dois saisir un texte par la phrase :"You must enter a message! You are being redirected..."

Voici l'extrait du debut de "Simplepush.php"

<?php
session_start();
//$_SESSION['passphrase'] = $_POST['passphrase'];
$_SESSION['message'] = $_POST['message'];

// Put your private key's passphrase here if needed:
//$passphrase = $_POST['passphrase'];

// Put your alert message here:
$message = $_POST['message'];

if(strlen($message) < 1) {
 
  header ("Refresh: 4; sendMessage.php");  
  exit("<span style=\"font-family: Verdana, Geneva, sans-serif; font-size: 14px;\">You must enter a message! You are being redirected...</span>" . PHP_EOL);
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
 

#10 Forum Général PHP » Saisie d'un message par PHP graphique mais considere comme vide !? » 22-03-2014 08:57:38

Donald
Réponses : 11

Salut,
le code ci-dessous permet de saisir un message dans une interface graphique comme celle representee en-dessous du code :

<!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>Pushnotification Service</title>
<style type="text/css">
.style1 {
  font-family: Verdana, Geneva, sans-serif;
  font-size: 14px;
}
.style2 {
  font-family: Verdana, Geneva, sans-serif;
  font-size: 12px;
}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function textCounter(field,cntfield,maxlimit) {
if (field.value.length > maxlimit) // if too long...trim it!
field.value = field.value.substring(0, maxlimit);
// otherwise, update 'characters left' counter
else
cntfield.value = maxlimit - field.value.length;
}
//  End -->
</script>

</head>
<body>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<?php
if($_GET['error'] == 1) {
 
  echo "<tr><td colspan='3' align='center'><span style='font-family: Verdana, Geneva, sans-serif; font-size: 20px; color: #FF0000;'><br /><b>Pushnotification was NOT sent!</b><br /><br /><br /></span></td></tr>";
}
else if($_GET['error'] == 2) {
 
  echo "<tr><td colspan='3' align='center'><span style='font-family: Verdana, Geneva, sans-serif; font-size: 20px; color: #008000;'><br /><b>Pushnotification was sent!</b><br /><br /><br /></span></td></tr>";
}
?>
<tr>
<form name="formLogout" method="post" action="logout.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
  <td colspan="3" align="right"><input type="submit" name="Submit" value="Logout" /></td>
</tr>
</table>
</td>
</form>
</tr>
<tr><td colspan="3">&nbsp;</td>
</tr>
<tr>
  <td colspan="3"><span class="style1"><b>Send Pushnotifications</b><br />Please enter a pushnotification in the form below, then click on "send"!<br /><b>Max: 107 characters!</b></span></td>
</tr>
<tr><td colspan="3">&nbsp;</td>
</tr>
<tr>
  <form name="form1" method="post" action="[b]simplepush.php[/b]">
  <td>
    <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
      <tr>
              <td colspan="3"><textarea style="width: 400px; height: 100px;" name="message" wrap="physical" onKeyDown="textCounter(document.form1.message,document.form1.remLen1,107)"
onKeyUp="textCounter(document.form1.message,document.form1.remLen1,107)"><?php echo $_SESSION['message']; ?></textarea><br /><input readonly type="text" name="remLen1" size="3" maxlength="3" value="107">
<span class="style1">characters left</span></td>
      </tr>
            <tr>
              <td colspan="3">&nbsp;</td>
      </tr>
      <tr>
                <td width="34%" align="left">&nbsp;</td>
                <td width="33%" align="left">&nbsp;</td>
          <td width="33%" align="right"><input type="submit" name="Submit" value="send" /></td>
      </tr>
    </table>
  </td>
  </form>
</tr>
</table>
</body>
</html>

Saisie message non reconnue

#11 Forum Général PHP » Erreur de pathname ? » 21-03-2014 17:11:22

Donald
Réponses : 5

Bonjour,
debutant en PHP/MySQL, j'ai le souci suivant :
Je defini le chemin d'acces a mon fichier log "anps_log" pour recuperer les erreurs ainsi :

  /**
  * Log path for APNS errors
  *
  * @var string
  * @access private
  */
  private $logPath = '/hosting/customers/www.mon-site.ch/gokyo_pns/apns.log';
 

mais les erreurs s'en vont dans un autre fichier "" dont voici l'emplacement :
emplacement du fichier en question

Quelle erreur est-ce que je commets svpl ?
Merci d'avance de votre aide.

#12 Re : Forum Général PHP » Message de Donald transféré dans un nouveau post. » 21-03-2014 09:02:54

Tout d'abord desole d'avoir poste dans un autre post, je partais du principe qu'il s'agissait "aussi" de "erreur".
Merci pour la reponse, qu'est-ce que je peux faire pour trouver ? Le tout est situe sur un serveur d'un hebergeur ?

#13 Re : Forum Général PHP » message d erreur » 20-03-2014 10:30:51

[Modération]
@Donald=>
Merci de ne pas surcharger un post par d'autres questions.
J'ai transféré vers un autre post, à l'avenir, je détruirai purement et simplement.
MK.

Pied de page des forums

Propulsé par FluxBB