J'ai récemment changé d'hébergement Web et malheureusement, l'administrateur a désactivé file_get_content et d'autres fonctions.Alternative à file_get_content (php: // entrée)
Le but de ce script est d'obtenir des informations sur l'appareil iOS directement à partir de l'appareil. Avant, j'utilisais ce code pour le faire:
$content = file_get_contents('php://input');
file_put_contents("data.txt", $content);
Et le résultat était comme ça (en data.txt)
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IMEI</key>
<string>01 257233 621346 0</string>
<key>PRODUCT</key>
<string>iPhone2,1</string>
<key>SERIAL</key>
<string>5K1124GHEDG</string>
<key>UDID</key>
<string>07cc825055gftr4edsa3f06d0373376a7664a66a</string>
<key>VERSION</key>
<string>10B329</string>
</dict>
</plist>
Comme la fonction Curl est activée sur mon serveur, j'ai essayé ce code de différentes façons, mais n'a pas fonctionné. Le fichier data.txt est vidé en conséquence!
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, "php://input");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
curl_close($ch);
file_put_contents("data.txt", $contents);
mise à jour:
Laissez-moi vous expliquer comment cela fonctionne. Nous dirigeons les utilisateurs vers un profil qui est stocké sur notre serveur (par exemple device.mobileconfig). Une fois que les utilisateurs cliquent dessus, ils seront invités à l'installer. Son contenu est:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<dict>
<key>URL</key>
<string>http://mywebsite.com/get.php</string>
<key>DeviceAttributes</key>
<array>
<string>UDID</string>
<string>VERSION</string>
<string>PRODUCT</string>
<string>SERIAL</string>
</array>
</dict>
<key>PayloadDescription</key>
<string>Install to get device info</string>
<key>PayloadDisplayName</key>
<string>UDID Finder</string>
<key>PayloadIdentifier</key>
<string>com.myud.ir</string>
<key>PayloadOrganization</key>
<string>MyUD.ir</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Profile Service</string>
<key>PayloadUUID</key>
<string>57A223FD-F675-90B1-8F43-22D3FC3BC181</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Le profil exécute get.php pour extraire des données de l'unité. J'ai essayé celui de Cristian mais je n'ai pas travaillé. J'ai probablement une erreur d'où. Le get.php est:
<?php
$xml = new SimpleXMLElement('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"/>');
$dict = $xml->addChild('dict');
foreach ($_POST as $item => $value) {
$dict->addChild('string', $item);
$dict->addChild('key', $value);
}
file_put_contents("data.txt", trim(str_replace('<?xml version="1.0"?>', '', $xml->asXML())));
?>
P.S.
J'ai juste besoin les données entre
<dict></dict>
il y a aussi une option curl pour définir le fichier de destination. – Charles
curl n'a aucune connaissance des flux de php. Il attend une URL correcte, et se plaindra à juste titre que 'php' n'est pas un protocole connu. –
@MarcB: Donc vous voulez dire que je ne peux pas obtenir de données par la méthode Curt? – PersianHero