Aller au contenu

sparh

Hubmaster
  • Compteur de contenus

    584
  • Inscrit(e) le

  • Dernière visite

Messages postés par sparh

  1. Bonjour,

    j'envoie des emails de confirmation d'inscription a mes utilisateurs avec une signature contenant une image.

    L'email est en html et jusqu’à aujourd'hui mon image était sur mon serveur.

     

    Maintenant j’aimerai que l'image soit en pièce jointe.
    Pas de souci pour mettre la pièce jointe mais impossible de l'afficher au bon endroit dans mon email, savez vous comment faire ?

     

    Avant ce qui marche très bien

    <div>
    <img src="http://monsite.com/monImage.jpg /><br>
    M société etc..
    </div>

     

    Maintenant mais ça ne marche pas (l'image est bien en pièce jointe de l'email)

    <div>
    <img src="monImage.jpg /><br>
    Ma société etc..
    </div>

     

    Auriez vous une idée ?
    Merci d'avance

     

     

     

     

  2. Merci de m'aider mais dans les 2 cas j'obtient null (j'avais déja testé pour voir si $values['location'] retournait un tableau).

    $retour = json_decode($values,true);
    var_dump($retour);
    $retour = json_decode($values);
    var_dump($retour);

    Voici un exemple de ma variable $values si jamais et la manière dont je la récupère

    $values = file_get_contents('php://input');
    //si je fait un echo $values j'obtient ça
    {"location":[{"coords":{"speed":13.78999996185303,"longitude":6.106461001741759,"latitude":46.20269310378117,"accuracy":10,"heading":239.3082580566406,"altitude":424.451416015625,"altitudeAccuracy":6},"is_heartbeat":false,"extras":{"action":""},"is_moving":true,"odometer":1763.193420100596,"uuid":"4C420566-1F55-4A89-83DA-F03D5C9E2423","activity":{"type":"unknown","confidence":100},"battery":{"level":0.28,"is_charging":false},"timestamp":"2016-10-19T09:13:12.000Z"},{"coords":{"speed":12.67000007629395,"longitude":6.105477869875073,"latitude":46.20219555439851,"accuracy":10,"heading":217.1203918457031,"altitude":424.525390625,"altitudeAccuracy":6},"is_heartbeat":false,"extras":{"action":""},"is_moving":true,"odometer":1857.093282904583,"uuid":"603BD74E-7324-4C17-B21A-E16C7430BC3D","activity":{"type":"unknown","confidence":100},"battery":{"level":0.28,"is_charging":false},"timestamp":"2016-10-19T09:13:19.000Z"}]}

     
     

  3. Bonjour,

    oui j'aimerai pouvoir récupérer toutes les données.

     

    Je convertit en array car après avoir bien galéré c'est le seul moyen que j'ai trouvé pour y arriver :(
    Quand je fais un count($retour) dans tous les cas j'obtient 1.

     

    Dans le cas ou location est un tableau rien ne fonctionne la fonction json_decode me renvoi null.

  4. Bonjour,
    j'ai un plugin de géolocalisation qui envoi des données au serveur les données sont envoyés sous cette forme:

    $values = '{
        "location": {
            "coords": {
                "latitude":   [Float],
                "longitude":  [Float]
                "accuracy":   [Float]
                "speed":      [Float|-1],
                "heading":    [Float/0-360|-1],
                "altitude":   [Float]
            },
            "extras": {   // <-- optional extras.  @see #getCurrentPosition for details
                "foo": "bar"
            },
            "activity": {
                "type": [still|on_foot|walking|running|in_vehicle|on_bicycle|unknown],
                "confidence": [Int/0-100%]
            },
            "geofence": {  // <-- Present only if a geofence was triggered at this location
                "identifier": [String],
                "action": [String ENTER|EXIT]            
            },
            "battery": {
                "level": [Float/0-1],
                "is_charging": [Boolean]
            },
            "timestamp": [ISO-8601 UTC], // eg:  "2015-05-05T04:31:54.123Z"
            "uuid":      [String],       // <-- Universally unique identifier
            "event"      [String],       // <-- motionchange|geofence|heartbeat
            "is_moving": [Boolean],      // <-- The motion-state when location was recorded (@deprecated; use #event)
            "is_heartbeat: [Boolean],    // <-- If this location was recorded during heartbeat mode.
            "odometer": [Float/meters]
        }
    }';

    Pour le traitement j'utilise :

    $retour = json_decode($values,true);
    $speed = $retour['location']['coords']['speed'];
    $longitude = $retour['location']['coords']['longitude'];
    etc...

     

    Mais dans certains cas "location" est un tableau, ce qui donne

    $values = '{
        "location": [{
            "coords": {
                "latitude":   [Float],
                "longitude":  [Float]
                "accuracy":   [Float]
                "speed":      [Float|-1],
                "heading":    [Float/0-360|-1],
                "altitude":   [Float]
            },
            "extras": {   // <-- optional extras.  @see #getCurrentPosition for details
                "foo": "bar"
            },
            "activity": {
                "type": [still|on_foot|walking|running|in_vehicle|on_bicycle|unknown],
                "confidence": [Int/0-100%]
            },
            "geofence": {  // <-- Present only if a geofence was triggered at this location
                "identifier": [String],
                "action": [String ENTER|EXIT]            
            },
            "battery": {
                "level": [Float/0-1],
                "is_charging": [Boolean]
            },
            "timestamp": [ISO-8601 UTC], // eg:  "2015-05-05T04:31:54.123Z"
            "uuid":      [String],       // <-- Universally unique identifier
            "event"      [String],       // <-- motionchange|geofence|heartbeat
            "is_moving": [Boolean],      // <-- The motion-state when location was recorded (@deprecated; use #event)
            "is_heartbeat: [Boolean],    // <-- If this location was recorded during heartbeat mode.
            "odometer": [Float/meters]
        },
        {
            "coords": {
                "latitude":   [Float],
                "longitude":  [Float]
                "accuracy":   [Float]
                "speed":      [Float|-1],
                "heading":    [Float/0-360|-1],
                "altitude":   [Float]
            },
            "extras": {   // <-- optional extras.  @see #getCurrentPosition for details
                "foo": "bar"
            },
            "activity": {
                "type": [still|on_foot|walking|running|in_vehicle|on_bicycle|unknown],
                "confidence": [Int/0-100%]
            },
            "geofence": {  // <-- Present only if a geofence was triggered at this location
                "identifier": [String],
                "action": [String ENTER|EXIT]            
            },
            "battery": {
                "level": [Float/0-1],
                "is_charging": [Boolean]
            },
            "timestamp": [ISO-8601 UTC], // eg:  "2015-05-05T04:31:54.123Z"
            "uuid":      [String],       // <-- Universally unique identifier
            "event"      [String],       // <-- motionchange|geofence|heartbeat
            "is_moving": [Boolean],      // <-- The motion-state when location was recorded (@deprecated; use #event)
            "is_heartbeat: [Boolean],    // <-- If this location was recorded during heartbeat mode.
            "odometer": [Float/meters]
        } etc...]
    }';

    Auriez vous une idée de comment récupérer les données ?

     

    Merci d'avance

  5. Salut
     

    figure {
      width:490px;
      height:320px;
      border:1px solid #000;
    }
    
    .img-licence {
    	font-size:0.7em;
    	text-align:right;
    	font-style:italic;
    	-moz-transform-origin: 100% 0%;
    	-moz-transform: rotate(90deg);
    	-o-transform-origin:  100% 0%;
    	-o-transform: rotate(90deg);
    	-webkit-transform-origin:  100% 0%;
    	-webkit-transform: rotate(90deg);
    	transform-origin: 100% 0%;
    	transform: rotate(90deg);
      float:right;
      padding-right:10px;
    }

    Je sais pas  si c'est parfait mais c'est déjà mieux

  6. Juste pour  info j'avais ouvert un ticket chez Infomaniak et voilà leur réponse :
     

    D'après quelques billets de blog technique (https://www.bram.us/2014/10/26/php-5-6-automatically-populating-http_raw_post_data-is-deprecated-and-will-be-removed-in-a-future-version/), il semblerait que ceci apparaissent même lorsque l'on ne fait pas de requêtes POST.
    Vous pouvez soit ignorer ces entrées, soit tenter une migration sous PHP7, ou essayer de mettre l'instruction qui va bien dans un .htaccess étant donné que c'est modifiable par dossier comme décrit içi (http://php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data ).

  7. Bonjour,

    dans mes logs je trouve systématiquement cette erreur : 

    stderr: PHP message: PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version.
    To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0, 

    J'ai longtemps cherché et ce que je ne comprends pas c'est que je n'utilise nulle part la variable $HTTP_RAW_POST_DATA.

    J'ai fini par découvrir que c'est la fonction suivante qui crée l'erreur.

     

    Auriez vous une idée d'ou peux  venir le problème ?
    Merci d'avance

     

    function api($url,$email,$pass,$id_api,$method,$data=''){
    
    $http_auth_ident = $email.':'.$pass ;
    $url_curl = $url.'/api/?method='.$method.'&id='.$id_api;
    // connexion
    $timeout = '15';
    $ch = curl_init($url_curl);
    curl_setopt($ch, CURLOPT_USERAGENT, "CURL");
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    
    if (preg_match('`^https://`i', $url_curl)) 
    { 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    } 
    
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    // Définition de la méthode d'authentification du serveur 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
    // Définition des identifiants 
    curl_setopt($ch, CURLOPT_USERPWD, $http_auth_ident); 
    if($data != '') {
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    }
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
    $response = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    
    return $response ;
    }

     

  8. Bonjour

    peux être une idée avec l’événement scroll de jquery (mais je ne suis pas un spécialiste en js non plus!).

     

    var is_scrolled = 'no';
    $(document).ready(function() {
    
    // désactive le scroll automatique car l'utilisateur à bougé lui même le scroll
    $(document).on("scroll",'#message_box', function() {  is_scrolled = 'yes'; }); 
    
    $('.toggle_chat').hide();
    
    // load messages every 3000 milliseconds from server.
    load_data = {'fetch':1};
    window.setInterval(function(){
    $.post('chatbox/shout.php', load_data,  function(data) {
    $('.message_box').html(data);		
    
    if(is_scrolled == 'no') $("#message_box").animate({scrollTop: $("#message_box")[0].scrollHeight},2000);//Autoscroll to bottom of div
    
    });
    }, 3000);
    
    });

     

    Après il faudra trouver une solution pour réactiver le scroll automatique en remettant is_scrolled = 'no'; (peux être au bout d'un certain temps ou si l'utilisateur scroll de lui même en bas de #message_box)

     

    Bonne journée

     

  9. Bonsoir,

    jusqu'ici j'utilisais la règle ci-dessous pour rediriger mes fichiers vers une page php.

    RewriteRule Fichiers/(.*)/(.*) /Fichiers/check_connect.php?dossier=$1&url=$2 [QSA,L,R=301]

    Un appel de monsite.com/Fichiers/Documents/fichier.doc est donc redirigé vers monsite.com/Fichiers/check_connect.php?dossier=Documents&url=fichier.doc

     

    Mon problème c'est que ce système ne gère pas les sous-dossier

    Je souhaiterai savoir s'il est possible de transformer le chemin d'un fichier en variable ?

     

    Par exemple  

    monsite.com/Fichiers/Documents/Sous-Dossier/fichier.doc devrait être redirigé vers monsite.com/Fichiers/check_connect.php?dossier=Documents/Sous-Dossier&url=fichier.doc

    monsite.com/Fichiers/Documents/Sous-Dossier/Sous-Dossier/fichier.doc devrait être redirigé vers monsite.com/Fichiers/check_connect.php?dossier=Documents/Sous-Dossier/Sous-Dossier/&url=fichier.doc

     

    Il faut préciser que je ne connais ni le nom des dossiers, ni leur nombre ni leur profondeur (combien de sous-dossier)

     

    Auriez-vous une idée de comment faire ça avec une redirection htaccess et si c'est seulement possible ?

     

    Merci d'avance

  10. Saucisse comme je suis je ne sait pas comment afficher les variables dont tu parle Dan (un echo ne renvoi rien en tout cas) et le SSH j'y ai accès mais je ne m'y suis toujours pas mis :unsure:

     

    J'ai appliquer ta recommandation en tous cas.

  11. Bonjour,

    j'accède à mon email via 3 interfaces toutes configurées en IMAP

    - Roundcube

    - Apple mail

    - Thunderbird

     

    Je reçoit et envoi les mails correctement, mes dossiers et contacts sont correctement synchronisé.

     

    Mon problème vient du classement des mails dans les dossier.

    Si je classe le mail en utilisant Roundcube ou Thunderbird le mail est correctement classé sur mes 3 interface

    Par contre si je classe le mail en utilisant Apple Mail : il se classe correctement sur les 3 interfaces MAIS dans Roundcube j'ai une copie qui reste dans la boîte de réception (voir image).

     

    Auriez-vous une idée d'ou ça peux venir ?

     

    Lis mails en gris clair ont tous été classé dans des dossier avec Mac Mail (je retrouve le vrai mail dans les dossier concerné)

    Si je supprime les mails en gris clair, le vrai mail qui est classé n'est pas supprimé (fort heureusement)

     

    630993bugmail.png

     

     

     

     

     

  12. Je me suis trompé en recopiant, voilà un copié/collé de ma page

     

    function create_url2($str){
      $str = preg_replace('~[^\\pL\d]+~u', '-', $str);
      $str = trim($str, '-');
      $str = iconv('utf-8', 'us-ascii//TRANSLIT', $str);
      $str = strtolower($str);
      $str = preg_replace('~[^-\w]+~', '', $str);
      return $str;
    }
    
    $chaine = 'Test d\'une chaine î í é è à';
    echo mb_detect_encoding($chaine).'<br />';
    echo $chaine.'<br />';
    echo create_url2($chaine);
    die();

     

    Le résultat normal :

    UTF-8
    Test d'une chaine î í é è à
    test-d-une-chaine-i-i-e-e-a

     

    Chez Infomaniak

    UTF-8
    Test d'une chaine î í é è à
    test-d-une-chaine-----

  13. Le 3/9/2011 15:57:28, SStephane a dit :

     

    
    function compute_string_for_url($str){
      $str = preg_replace('~[^\\pL\d]+~u', '-', $str);
      $str = trim($str, '-');
      $str = iconv('utf-8', 'us-ascii//TRANSLIT', $str);
      $str = strtolower($str);
      $str = preg_replace('~[^-\w]+~', '', $str);
      return $str;
    }
    

     

    Bonjour,

    je revient sur la fonction proposée par SStephane.

     

    Je viens d'installer un nouveau site chez Infomaniak et d'un coup ça ne fonctionne plus :

    Voilà mon script :

     

    $chaine = 'Test d\'une chaine î í é è à';
    echo mb_detect_encoding($chaine).'<br />';
    echo $chaine.'<br />';
    echo compile_string_for_url($chaine);

    Le résultat normal :

    UTF-8
    Test d'une chaine î í é è à
    test-d-une-chaine-i-i-e-e-a

     

    Chez Infomaniak

    UTF-8
    Test d'une chaine î í é è à
    test-d-une-chaine-----

     

    Auriez-vous une idée de ce qui pourrait poser ce problème ?

    Merci d'avance

  14. Bonjour,



    dans ton code le script pour afficher l'adresse est appelé par



    <input type="button" value="Obtenir la ville..." onclick="retrieve()">

    Il suffit donc d'appeler la fonction retreive() au chargement de la page (une fois qu'on a géolocalisé l'utilisateur)



    Voilà le nouveau javascript (il y a juste une nouvelle ligne sous map.panTo(latlng); )



    <script type="text/javascript">

    /* Déclaration des variables */
    var geocoder;
    var map;
    var infowindow = new google.maps.InfoWindow();
    var marker;

    /* Fonction d'initialisation de la map appelée au chargement de la page */
    function initialize() {

    if(navigator.geolocation) {

    // Fonction de callback en cas de succès
    function affichePosition(position) {

    var infopos = "";
    infopos += position.coords.latitude +",";
    infopos += position.coords.longitude;
    document.getElementById('latlng').value = infopos;


    // On instancie un nouvel objet LatLng pour Google Maps
    var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

    // Ajout d'un marqueur à la position trouvée
    var marker = new google.maps.Marker({
    draggable : true,
    autoPan:true,
    position: latlng,
    map: map

    });

    map.panTo(latlng);
    retrieve(); // tu peux qussi mettre codeLatLng(infopos);

    }

    // Fonction de callback en cas d’erreur
    function erreurPosition(error) {
    var info = "Erreur lors de la géolocalisation : ";
    switch(error.code) {
    case error.TIMEOUT:
    info += "Timeout !";
    break;
    case error.PERMISSION_DENIED:
    info += "Vous n’avez pas donné la permission";
    break;
    case error.POSITION_UNAVAILABLE:
    info += "La position n’a pu être déterminée";
    break;
    case error.UNKNOWN_ERROR:
    info += "Erreur inconnue";
    break;
    }

    }

    navigator.geolocation.getCurrentPosition(affichePosition,erreurPosition);

    } else {

    alert("Ce navigateur ne supporte pas la géolocalisation");
    }
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(48.8566667, 2.3509871);
    var myOptions = {
    zoom: 8,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);


    }
    /* Fonction de géocodage inversé (en fonction des coordonnées de l'adresse) */
    function codeLatLng(input) {
    var latlngStr = input.split(",",2);
    var lat = parseFloat(latlngStr[0]);
    var lng = parseFloat(latlngStr[1]);
    var latlng = new google.maps.LatLng(lat, lng);
    geocoder.geocode({'latLng': latlng}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
    if (results[0]) {
    map.setZoom(11);
    marker = new google.maps.Marker({
    position: latlng,
    map: map
    });
    var elt = results[0].address_components;
    for(i in elt){
    if(elt[i].types[0] == 'postal_code')
    document.getElementById('cp').value = elt[i].long_name;
    if(elt[i].types[0] == 'locality')
    document.getElementById('adr').value = elt[i].long_name;
    if(elt[i].types[0] == 'administrative_area_level_2')
    document.getElementById('dpt').value = elt[i].long_name;
    if(elt[i].types[0] == 'country')
    document.getElementById('pays').value = elt[i].long_name;

    }
    infowindow.setContent(results[0].formatted_address);
    infowindow.open(map, marker);
    map.setCenter(latlng);
    }
    } else {
    alert("Geocoder failed due to: " + status);
    }
    });
    }
    function retrieve(){
    var input = document.getElementById("latlng").value;
    codeLatLng(input);
    }

    </script>

    bonne journée


  15. Bonjour,

    J'ai bien galéré mais j'ai fini par trouver.
    En fait en désactivant ma variable PHP

    $ressources .= '{"title":"'.$row['type'].'","id":"'.$row['id'].'"},';

    ça bloquait aussi une requête ajax (et c'est pour ça qu'il n'y avait plus de warning).

    Le warning PHP venait d'une requête exécutée par le script appelé via ajax.

    En tous cas merci d'avoir regardé

×
×
  • Créer...