2016-04-11 11 views
0

Hier ist, was ich für meine Funktion haben, ist es eine Taste drücken, das Senden von zwei Eingangs-IDs aktiviert wird, die eine Kette bilden:Multiple String Ersatz durch PHP-Datei

var str = "headingText=" + $("#headingText").val() + 
    "&centerText=" + $("#centerText").val(); 

$.ajax({ 
    url: "indexpdf.php", 
    data: str, 
    cache: false, 
    success: function (result) { 
     console.log("Success!"); 
    } 
}); 

Jetzt ist hier meine indexpdf.php-Datei:

<? 
$headingText = trim(isset($_POST['headingText']) ? $_POST['headingText'] : ''); 
$centerText = trim(isset($_POST['centerText']) ? $_POST['centerText'] : ''); 

$initialpdf = file_get_contents('file_html.php'); 

$initialpdf = str_replace(array(
     '%headingText%', 
     '%centertext%' 
    ), array (
     $headingText, 
     $centerText, 
    ), $initialpdf); 

$fp = fopen('file_html2.php','w'); 
file_put_contents('file_html2.php', $initialpdf); 
?> 

Das Ziel hier ist es, die zwei Strings von der ersten Seite des Eingaben zu übernehmen und nutzen sie alle „% HeadingText%“ und „% centerText%“ Tags in „file_html.php“ und speichern sie dann schließlich ersetzen es als "file_html2.php".

Die Datei ist das Speichern in Ordnung, aber der String Ersatz funktioniert nicht ..

+2

Eine String-Ersetzung auf eine ausführbare PHP-Datei aus POST-Daten ist sehr gefährlich. Ein Benutzer könnte beliebigen PHP-Code auf Ihrem Server ausführen. Und ist $ initialpdf eine PDF-Datei? –

+0

Sind Sie sicher, dass es Post ist und nicht bekommen? – AbraCadaver

+0

@MattS Wie würde ich in der Lage sein zu bekommen, was ich getan habe sicher gemacht? und nein, $ initialpdf ist nur ein Array. – NoReceipt4Panda

Antwort

0

Ihr ajax Anruf ist nicht auf ein Verfahren festgelegt. Es wird automatisch $_GET verwendet. Wenn Sie möchten, dass es $_POST verwendet, können Sie die Kurzschrift:

Seiten, die mit POST abgerufen werden, werden nie zwischengespeichert, daher haben die Optionen cache und ifModified in jQuery.ajaxSetup() keine Auswirkungen auf diese Anforderungen.

$.post("indexpdf.php", data: str,function (result) { 
     console.log("Success!"); 
}); 

Oder fügen Sie einfach die "Methode" Option, um Ihre ajax.

$.ajax({ 
    url: "indexpdf.php", 
    data: str, 
    method: "POST", 
    cache: false, 
    success: function (result) { 
     console.log("Success!"); 
    } 
}); 
0

$.ajax verwendet standardmäßig GET-Methode. Wenn der Server-Side-Code erwartet POST-Daten zu erhalten, dann müssen Sie diese hinzufügen:

$.ajax({ 
method: "POST", 
... 
}); 

Auch, wenn Sie file_put_contents() verwenden es keine Notwendigkeit für fopen() ist.

0

Statt eine Abfrage-Zeichenfolge für alle Übergabe eines JSON-Objekt zu sehen, übergeben Sie wie folgt vor:

 var jsonData = {} 
     jsonData.headingText = $("#headingText").val(); 
     jsonData.centerText = $("#centerText").val(); 

     $.ajax({ 
      url: "indexpdf.php", 
      data: jsonData, 
      cache: false, 
      success: function (result) { 
       alert("Success!"); 
      } 
     }); 

Dies ist sauberer und sicherer. Der Zugriff auf die Daten kann in der PHP-Datei gleich bleiben.