Hoe kan ik delen uit een url halen met php7
En $_POST ?
php://input de rauwe body van een HTML HTTP response.
Waarom gebruik je specifiek php://input, maar ook: hoe wordt de informatie aangeleverd?
Indien dit via POST gebeurt is deze tevens beschikbaar via $_POST.
Als de methode GET is dan is de informatie beschikbaar via GET, maar dan zou deze wel urlencoded aangeleverd moeten worden via de querystring (oftewel in de vorm script.php?name=iSpindel000&ID=125392 etc.)
En anders zul je misschien de REQUEST_URI moeten ontleden ofzo.
Aangezien $_GET leegt blijft vermoed ik dat het een POST request betreft?
Je zou ook de documentatie van deze "Arduino" kunnen raadplegen om na te gaan hoe deze zijn informatie aanlevert, ik neem aan dat dat gespecificeerd is.
Als ik het goed begrijp leest Waarom gebruik je specifiek php://input, maar ook: hoe wordt de informatie aangeleverd?
Indien dit via POST gebeurt is deze tevens beschikbaar via $_POST.
Als de methode GET is dan is de informatie beschikbaar via GET, maar dan zou deze wel urlencoded aangeleverd moeten worden via de querystring (oftewel in de vorm script.php?name=iSpindel000&ID=125392 etc.)
En anders zul je misschien de REQUEST_URI moeten ontleden ofzo.
Aangezien $_GET leegt blijft vermoed ik dat het een POST request betreft?
Je zou ook de documentatie van deze "Arduino" kunnen raadplegen om na te gaan hoe deze zijn informatie aanlevert, ik neem aan dat dat gespecificeerd is.
Gewijzigd op 27/03/2020 21:04:36 door Thomas van den Heuvel
Wow, op dezelfde seconde zelfs, Thomas :-)
Toevoeging op 27/03/2020 21:00:21:
Hallo Thomas,
php://input heb ik in het begin gebruikt en dit stuk code heeft altijd gewerkt. Het probleem is dat het nu zonder wijzigingen van mijn kant of wijzigingen in het apparaat niet meer werkt. Ik denk dat de hoster iets in het php pakket heeft veranderd ofzo. Ik stuur de info op dezelfde manier als voorheen dus ook handmatig via de webbrowser maar geen van beide werken nog.
Vervolgens zou je een simpel formuliertje in elkaar kunnen zetten die iets POST naar een script die dit probeert te verwerken met file_get_contents('php://input'). Op die manier kun je in ieder geval uitsluiten dat het daar niet aan ligt.
Je zou ook kunnen kijken naar de documentatie van dit apparaat, staan daar nog details in over hoe informatie is aangeleverd?
En tot slot zou je altijd kunnen proberen om het melden + weergeven van fouten aan te zetten in het afhandelend script, en dan deze proberen aan te roepen zoals dit apparaat dat doet.
Zet het volgende bovenaan je code:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
error_reporting(E_ALL); // welke fouten melden (alle)
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
?>
error_reporting(E_ALL); // welke fouten melden (alle)
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
?>
Ook zou je wellicht $content op kunnen vangen in een plat bestand, en dan vervolgens dit bestand inhoudelijk kunnen inspecteren om te zien wat er aan data binnenkomt.
Op dit moment kun je denk ik het beste inzetten op strategieën waarmee je dingen kunt uitsluiten / data kunt analyseren.
Gewijzigd op 27/03/2020 21:18:07 door Thomas van den Heuvel
Warning: Use of undefined constant temperature - assumed 'temperature' (this will throw an Error in a future version of PHP) in /home/bla/public_html/sitepro/add1.php on line 24
ok
Toevoeging op 27/03/2020 21:22:15:
Sorry die reageerde op een echo. Nu krijg ik weer geen melding nu ik die echo weg gehaald heb
Ja sorry dat had ik al aangepast. Was een testje om te zien of ik iets binnen kreeg. maar dus niet het probleem.
En via $_POST?
Sorry Arien, ik snap je vraag niet.
Heb je al gekeken of het via $_POST binnen komt?
Ja dat gaf hetzelfde antwoord als GET
Kan je het niet met je Arduino naar een bestand schrijven? Als is het om te testen.
Nee de arduino software is door iemand anders geschreven en geeft deze output
Zag dit al eerder in jouw tweede codefragment:
Code (php)
1
"INSERT INTO fermentervalues (name, angle, temperature, battery, wort, string ) VALUES( '$json[name]', '$json[angle]', '$json[temperature]', '$json[battery]', '$json[gravity]', '$unixtime')";
Voor de goede orde zouden de kolomnamen voorzien moeten worden van quotes (anders worden deze geinterpreteerd als (niet-bestaande) constanten), en zouden deze velden ook ge-escaped moeten worden in de SQL-context, bijvoorbeeld als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql = "
INSERT INTO fermentervalues (
name, angle, temperature, battery, wort, string
) VALUES (
'".mysqli_real_escape_string($conn, $json['name'])."',
'".mysqli_real_escape_string($conn, $json['angle'])."',
'".mysqli_real_escape_string($conn, $json['temperature'])."',
'".mysqli_real_escape_string($conn, $json['battery'])."',
'".mysqli_real_escape_string($conn, $json['gravity'])."',
'".mysqli_real_escape_string($conn, $unixtime)."'
)";
?>
$sql = "
INSERT INTO fermentervalues (
name, angle, temperature, battery, wort, string
) VALUES (
'".mysqli_real_escape_string($conn, $json['name'])."',
'".mysqli_real_escape_string($conn, $json['angle'])."',
'".mysqli_real_escape_string($conn, $json['temperature'])."',
'".mysqli_real_escape_string($conn, $json['battery'])."',
'".mysqli_real_escape_string($conn, $json['gravity'])."',
'".mysqli_real_escape_string($conn, $unixtime)."'
)";
?>
Indien je de object georienteerde notatie gebruikt van mysqli kan de bovenstaande code nog wat korter.
Gewijzigd op 27/03/2020 22:10:47 door Thomas van den Heuvel