Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme beim Übergeben eines json Objekt an ein php Script.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme beim Übergeben eines json Objekt an ein php Script.

    Hallo,

    ich versuche gerade aus einer Chrome Extension app eine Json mit einem PHP-Script auszuwerten und in eine Datenbank zu schreiben. Dafür habe ich meinen Code erst einmal mit dem RestCient getestet. In dem RestClient habe ich mir selber eine json gebastelt die folgendermaßen aussieht:

    Code:
    {
      "city": "Würzburg",
      "country": "Deutschland",
      "email": "info@snapaddy.com",
      "fax": "+4993146621219",
      "firstName": "Jochen",
      "gender": 0,
      "image": "https://media.licdn.com/mpr/mpr/shrinknp_400_400/AAEAAQAAAAAAAAOGAAAAJGYwZDA3ZDMyLTMwZTEtNGM0NC1iODMzLWQ5M2RiMzk3YjdlNA.jpg",
      "lastName": "Seelig",
      "mobile": "+4961966525375",
      "organization": "snapADDY GmbH",
      "phone": "+4993146621201",
      "position": "Geschäftsführer",
      "xing": "https://www.xing.com/profile/Sebastian_Metzger11",
      "linkedin": "https://www.linkedin.com/in/sebastian-metzger-a8b58634/",
      "state": "",
      "street": "Juliuspromenade 3",
      "title": "",
      "website": "https://snapaddy.com",
      "zip": "97070",
      "vat": "DE815576732",
      "created": "2017-03-17T09:32:13.673Z",
      "createdBy": "s.metzger@snapaddy.com",
      "createdTimestamp": 1489743133673,
      "bcImage": "https://api.snapaddy.com/images/21a80dc2b0811a10bb2445dadce5ec5d2485ae49d01892dc723180fb86ff1ed3d6699d4efdf3dad9.jpg",
      "bcImageBackside": "https://api.snapaddy.com/images/21a80dc2b0811a10bb2445dadce5ec5d2485ae49d01892dc723180fb86ff1ed3d6699d4efdf3dad9.jpg"
    }
    Mein Code funktioniert auch soweit mit dieser Json.
    Mein Code:

    PHP-Code:
    <?php
    /**
     * Created by PhpStorm.
     * User: bavramor
     * Date: 08.11.17
     * Time: 22:37
     */
    include("logs/logfile.html");
    include(
    "logs/logfile.txt");
    require_once(
    "includes/config.inc.php");

    //Make sure that it is a POST request.
    if (strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') != 0) {
        throw new 
    Exception('Request method must be POST!');
    }

    //Make sure that the content type of the POST request has been set to application/json
    $contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : '';
    if (
    strcasecmp($contentType'application/json') != 0) {
        throw new 
    Exception('Content type must be: application/json');
    }

    //Receive the RAW post data.
    $content file_get_contents("php://input");

    //Attempt to decode the incoming RAW post data from JSON.
    $decoded json_decode($contenttrue);

    //If json_decode failed, the JSON is invalid.
    if (!is_array($decoded)) {
        throw new 
    Exception('Received content contained invalid JSON!');
    }
    print_r($decoded["firstName"]);
    print_r($decoded["lastName"]);

    $firstName $decoded["firstName"];
    $lastName $decoded["lastName"];


    mysqli_query($db_link"INSERT INTO `contact` (`id`, `first_name`, `last_name`) VALUES('$firstName', '$lastName', 'Dortmond')");

    mysqli_close($db_link);

    ?>
    Probiere ich mein Script jetzt mit der App aus und schreibe den Request in eine Log-Datei sieht er wie befolgt aus:

    Code:
    POST /api/v1/portal-access/scripts/request.php HTTP/1.1
    
    HTTP headers:
    Espo-Cgi-Auth:
    Host: espocrm.norajensen.de
    Connection: keep-alive
    Accept: application/json
    Origin: chrome-extension://pijkopmmbakjnkbhlhmoiakmdjomjppo
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
    Accept-Encoding: gzip, deflate
    Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
    Cookie: auth-username=admin; auth-token=4e8b2e151316a191468cf2b5aa5a22fe
    
    Request body:
    [object Object]

    Ich habe das jetzt so verstanden, dass es sich dabei um ein objekt in einem Array handelt, aber wie komme ich an die Werte dran. Oder heißt es doch, dass von der App nichts ausgeliefert wird.
    Bin da gerade ein wenig ratlos und würde mich über jeden kleinen Rat sehr freuen.

    Viele Grüße und Danke

    Bavra

  • #2
    Der Fehler ist nicht im PHP-Code, sondern im clientseitigen Code.

    Kommentar


    • #3
      Vielen Dank erst einmal. Mit Clientseitig meinst Du in meinem Fall, dass die App da keine konforme json ausliefert, sondern nur Schrott? Danke

      Kommentar


      • #4
        Genau. Wenn man ein JavaScript-Object direkt in einen String verwandelt, kommt eben [object Object] dabei heraus.

        Kommentar


        • #5
          Hi,

          danke noch mal für eure Hilfe. Das Problem war, dass die Datei schon geparst war. Also war das json_decode quasi überflüssig und ein Schritt zu viel.

          Gruß Bavra

          P.S.: Wie setze ich den den Post auf gelöst?

          Kommentar

          Lädt...
          X