Je vais avoir un petit problème avec un script je travaille, et ce que je suis en cours d'exécution dans:Enregistrer le code PHP pour le fichier en utilisant fwrite
tout d'abord un peu sur le fonctionnement de script . Il utilise réellement WordPress (c'est un plugin) et il rend les pages dynamiques basées sur divers paramètres qu'ils peuvent changer dans le backend. J'ajoute une fonctionnalité Exporter vers HTML où ils peuvent créer une version statique de cette page après qu'ils ont déjà créé la page dans le plugin.
Dans cette page exportée j'en ai besoin pour enregistrer une fonction PHP en haut du fichier, et une autre ailleurs dans la page. Voilà ce que je suis en train de faire:
$fbscript=file_get_contents('fbscript.txt');
$newcontent=str_replace('<!-- dont erase this line -->',$fbscript,$newcontent);
$fbscript2=file_get_contents('fbscript2.txt');
$newcontent=str_replace('<!-- dont erase this line 2 -->',$fbscript2,$newcontent);
Les 2 dont erase this line
choses sont quelque part dans les pages dynamiques où il a besoin de mettre les scripts. C'est ce qui montre quelque part dans la page exportée:
<br />
<b>Notice</b>: Undefined index: signed_request in <b>C:\xampp\htdocs\wp\wp-content\plugins\easyfanpagedesign\default.theme\htmlpost-31345.php</b> on line <b>82</b><br />
<br />
<b>Notice</b>: Undefined offset: 1 in <b>C:\xampp\htdocs\wp\wp-content\plugins\easyfanpagedesign\default.theme\htmlpost-31345.php</b> on line <b>3</b><br />
donc je suppose que ce que je suis vraiment en train de demander comment puis-je enregistrer un fichier en utilisant fwrite avec une extension .php
et un script php dans la fichier enregistré. Ceci est un exemple du script php je suis en train d'ajouter à la page enregistrée en utilisant fwrite (PHP SDK de Facebook):
<?php
function parsePageSignedRequesttt($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
return null;
}
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
?>
Ceci est mon dossier complet de export.php qui fait tout:
<?php
$content=$_POST['efpd_page_content'];
$uistyle=$_POST['efpd_ui_style'];
$app_id=$_POST['efpd_appid'];
$the_fscripts=$_POST['efpd_fscripts'];
$the_hscripts=$_POST['efpd_hscripts'];
$bgstuff=$_POST['efpd_bgstuff'];
$jquery=$_POST['efpd_jquery'];
$jqueryui=$_POST['efpd_jqueryui'];
$cycle=$_POST['efpd_cycle'];
$copytext=$_POST['efpd_copytext'];
$affstr=$_POST['efpd_affstr'];
$the_style=$_POST['efpd_style'];
$the_gwf=$_POST['efpd_gwfstyle'];
$secret=$_POST['efpd_secret'];
if(empty($secret)){$secret=999999;}
$newcontent=file_get_contents($_POST['efpd_refurl']);
$fbscript=file_get_contents('fbscript.txt');
$newcontent=str_replace('<!-- dont erase this line -->',$fbscript,$newcontent);
$fbscript2=file_get_contents('fbscript2.txt');
$newcontent=str_replace('<!-- dont erase this line 2 -->',$fbscript2,$newcontent);
$newcontent=str_replace('THE_SECRET',$secret,$newcontent);
//die(var_dump($newcontent));
$int=rand(1,99999);
$savefile = "htmlpost-$int.php";
$handle = fopen($savefile, 'w') or die("can't open file");
fwrite($handle,$newcontent);
fclose($handle);
echo "<a href='$savefile'>Right Click > Save As to download the generated HTML page.</a>";
?>
Quelque part dans votre code doit être '$ _REQUEST ['signed_request']', n'est-ce pas? – Niko
Ouais c'est dans le deuxième script qui est ajouté au milieu de la page (fbscript2.txt) – Jared
Ok, c'est ce qui provoque ces erreurs qui apparaissent - parce que cette page semble être une application sur facebook et vous ne l'exécutez pas réellement là (maintenant?). – Niko