it-swarm.com.de

Wie rufe ich an? PHP Datei aus HTML oder Javascript

Ich habe mich schon lange umgesehen und finde nirgendwo eine Antwort auf diese scheinbar grundlegende Frage. Es ist mir egal, ob die Seite neu geladen wird oder die Ergebnisse sofort anzeigt. Ich möchte nur, dass eine Schaltfläche auf meiner Website eine PHP -Datei ausführt. Das ist es. Ich habe festgestellt, dass alle Websites Ihnen entweder sagen, wie Sie den PHP - Code direkt in Ihrem HTML-Code ausführen, oder dass Sie ajax verwenden. Ich verwende ajax, wenn sich herausstellt, dass es notwendig ist, aber es gab eine Zeit, bevor ajax existierte, dass PHP verwendet wurde. Wenn ich den Code in HTML schreiben kann, warum kann ich die Datei dort nicht einfach darauf referenzieren oder einfach in Javascript aufrufen?

Wenn sich herausstellt, dass ajax der einzige Weg nach vorne ist, was muss ich darüber wissen, um eine PHP -Datei aufzurufen, die eine Textdatei auf einem Tastendruck erstellt? Ich mache eine einfache Blog-Site für mich, und ich habe den Code für die Site und das Javascript, das den Post aufnehmen kann, den ich in ein textarea schreibe, und es sofort anzeigen. Ich möchte es nur mit einer PHP - Datei verknüpfen, die den permanenten Blogeintrag auf dem Server erstellt, sodass der Beitrag beim erneuten Laden der Seite noch vorhanden ist. 

Danke, dass Sie sich die Zeit genommen haben, um zu lesen und zu antworten.

12
Jackery

Wie mache ich einen Button mit PHP?

Es ist mir egal, ob die Seite neu geladen wird oder die Ergebnisse sofort anzeigt.

Gut!

Hinweis: Wenn Sie die Seite nicht aktualisieren möchten, sehen Sie unten "Ok ... aber wie verwende ich Ajax?".

Ich möchte nur, dass eine Schaltfläche auf meiner Website eine PHP -Datei ausführt.

Dies kann mit einem Formular mit einem einzigen Button gemacht werden:

<form action="">
  <input type="submit" value="my button"/>
</form>

Das ist es.

Ziemlich viel. Beachten Sie auch, dass es Fälle gibt, in denen Ajax wirklich der richtige Weg ist.

Das hängt davon ab, was du willst. Im Allgemeinen benötigen Sie ajax nur, wenn Sie die Seite nicht neu laden möchten. Trotzdem hast du gesagt, dass dir das egal ist.


Warum kann ich PHP nicht direkt von JavaScript aus aufrufen?

Wenn ich den Code in HTML schreiben kann, warum kann ich die Datei dort nicht einfach darauf referenzieren oder einfach in Javascript aufrufen?

Weil der PHP Code nicht im HTML just fine ist. Dies ist eine Illusion, die durch die Funktionsweise der meisten serverseitigen Skriptsprachen (einschließlich PHP, JSP und ASP) entsteht. Dieser Code existiert nur auf dem Server und ist vom Client (dem Browser) ohne einen entfernten Aufruf nicht erreichbar.

Sie können Beweise dafür sehen, wenn Sie Ihren Browser bitten, den Quellcode der Seite anzuzeigen. Dort wird der Code PHP nicht angezeigt, da der Code PHP nicht an den Client gesendet wird und daher nicht vom Client aus ausgeführt werden kann. Aus diesem Grund müssen Sie einen Remote-Aufruf durchführen, damit der Client die Ausführung von PHP -Code auslösen kann.

Wenn Sie kein Formular verwenden (wie oben gezeigt), können Sie den Fernaufruf von JavaScript aus mit einem kleinen Objekt namens Ajax ausführen. Sie können auch überlegen, ob das, was Sie in PHP tun möchten, direkt in JavaScript ausgeführt werden kann.


Wie rufe ich die andere PHP Datei auf?

Verwenden Sie ein Formular, um den Anruf zu tätigen. Sie können den Benutzer auf eine bestimmte Datei verweisen lassen:

<form action="myphpfile.php">
  <input type="submit" value="click on me!">
</form>

Der Benutzer landet auf der Seite myphpfile.php. Damit es für die aktuelle Seite funktioniert, setzen Sie action auf eine leere Zeichenfolge (was ich in dem Beispiel getan habe, das ich Ihnen früher gegeben habe).

Ich möchte es nur mit einer PHP - Datei verknüpfen, die den permanenten Blogeintrag auf dem Server erstellt, sodass der Beitrag beim erneuten Laden der Seite noch vorhanden ist.

Wenn Sie eine Operation auf dem Server ausführen möchten, sollten Sie dafür sorgen, dass Ihr Formular die erforderlichen Felder enthält (selbst wenn type="hidden" und POST verwendet wird):

<form action="" method="POST">
  <input type="text" value="default value, you can edit it" name="myfield">
  <input type="submit" value = "post">
</form>

Was muss ich darüber wissen, um eine PHP -Datei aufzurufen, die auf Knopfdruck eine Textdatei erstellt?

siehe: Wie schreibe ich in eine Datei in PHP .


Wie erhalten Sie die Daten vom POST auf dem Server?

Ich bin froh, dass du fragst ... Da bist du ein newb begginer, ich gebe dir eine kleine Vorlage, der du folgen kannst:

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST')
    {
        //Ok we got a POST, probably from a FORM, read from $_POST.
        var_dump($_PSOT); //Use this to see what info we got!
    }
    else
    {
       //You could assume you got a GET
       var_dump($_GET); //Use this to see what info we got!
    }
 ?>
 <!DOCTYPE html>
 <html lang="en">
   <head>
     <meta char-set="utf-8">
     <title>Page title</title>
   </head>
   <body>
     <form action="" method="POST">
       <input type="text" value="default value, you can edit it" name="myfield">
       <input type="submit" value = "post">
     </form>
   </body>
 </html>

Hinweis: Sie können var_dump entfernen. Dies ist nur für Debugging-Zwecke gedacht.


Wie mache ich...

Ich kenne den nächsten Schritt, Sie werden fragen, wie Sie:

  1. wie werden Variablen aus einer PHP -Datei an eine andere übergeben?
  2. wie kann ich mich an den Benutzer erinnern/sich anmelden?
  3. Wie vermeide ich diese lästige Meldung, wenn Sie die Seite neu laden?

Dafür gibt es eine einzige Antwort: Sitzungen.

Ich gebe eine umfangreichere Vorlage für Post-Redirect-Get

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST')
    {
        var_dump($_PSOT);
        //Do stuff...
        //Write results to session
        session_start();
        $_SESSION['stuff'] = $something;
        //You can store stuff such as the user ID, so you can remeember him.
        //redirect:
        header('Location: ', true, 303);
        //The redirection will cause the browser to request with GET
        //The results of the operation are in the session variable
        //It has empty location because we are redirecting to the same page
        //Otherwise use `header('Location: anotherpage.php', true, 303);`
        exit();
    }
    else
    {
        //You could assume you got a GET
        var_dump($_GET); //Use this to see what info we got!
        //Get stuff from session
        session_start();
        if (array_key_exists('stuff', $_SESSION))
        {
           $something = $_SESSION['stuff'];
           //we got stuff
           //later use present the results of the operation to the user.
        }
        //clear stuff from session:
        unset($_SESSION['stuff']);
        //set headers
        header('Content-Type: text/html; charset=utf-8');
        //This header is telling the browser what are we sending.
        //And it says we are sending HTML in UTF-8 encoding
    }
 ?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta char-set="utf-8">
    <title>Page title</title>
  </head>
  <body>
    <?php if (isset($something)){ echo '<span>'.$something.'</span>'}?>;
    <form action="" method="POST">
      <input type="text" value="default value, you can edit it" name="myfield">
      <input type="submit" value = "post">
    </form>
  </body>
</html>

Bitte schauen Sie auf php.net nach einem Funktionsaufruf, den Sie nicht kennen. Wenn Sie dies noch nicht getan haben, erhalten Sie eine gute Einführung in HTML5.

Verwenden Sie auch UTF-8 weil UTF-8 !


Anmerkungen:

Ich mache eine einfache Blog-Site für mich, und ich habe den Code für die Site und das Javascript, mit dem ich den Post aufnehmen kann, den ich in einem Textbereich schreibe, und ihn sofort anzeigen.

Verwenden Sie ein CMS (Codepress, Joomla, Drupal usw.)? Das macht einige Einschränkungen, wie man Dinge tun muss.

Wenn Sie ein Framework verwenden, sollten Sie sich die Dokumentation ansehen oder die entsprechenden Informationen in den Foren, in der Mailingliste, in der Diskussionsseite oder in den Kontakten der Autoren nachfragen.


Ok ... aber wie verwende ich Ajax trotzdem?

Nun ... Ajax wird durch einige JavaScript-Bibliotheken leicht gemacht. Da Sie ein Anfänger sind, empfehle ich jQuery .

Lassen Sie uns also mit jQuery etwas über Ajax an den Server senden. In diesem Beispiel verwende ich $ .post anstelle von $ .ajax .

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST')
    {
        var_dump($_PSOT);
        header('Location: ', true, 303);
        exit();
    }
    else
    {
        var_dump($_GET);
        header('Content-Type: text/html; charset=utf-8');
    }
 ?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta char-set="utf-8">
    <title>Page title</title>
    <script>
        function ajaxmagic()
        {
            $.post(                             //call the server
                "test.php",                     //At this url
                {
                    field: "value",
                    name: "John"
                }                               //And send this data to it
            ).done(                             //And when it's done
                function(data)
                {
                    $('#fromAjax').html(data);  //Update here with the response
                }
            );
        }
    </script>
  </head>
  <body>
    <input type="button" value = "use ajax", onclick="ajaxmagic()">
    <span id="fromAjax"></span>
  </body>
</html>

Der obige Code sendet eine Anforderung POST an die Seite test.php.

Hinweis: Sie können sessions mit ajax mischen und wenn Sie möchten.


Wie mache ich...

  1. Wie stelle ich eine Verbindung zur Datenbank her?
  2. Wie verhindere ich die SQL-Injection?
  3. Warum sollte ich keine Mysql_ * -Funktionen verwenden?

... für diese oder andere Fragen stellen Sie bitte eine andere Frage. Das ist zu viel für diesen.

51
Theraot

Ich möchte nur, dass eine Schaltfläche auf meiner Website eine PHP -Datei ausführt

<form action="my.php" method="post">
    <input type="submit">
</form>

Im Allgemeinen verwenden Sie jedoch einen Link, es sei denn, Sie senden neue Daten zum Speichern an den Server.

<a href="my.php">run php</a>

(Obwohl Sie einen Linktext verwenden sollten, der beschreibt, was aus Sicht des Benutzers geschieht, nicht die Server.)


Ich mache eine einfache Blog-Site für mich, und ich habe den Code für die Site und das Javascript, mit dem ich den Post aufnehmen kann, den ich in einem Textbereich schreibe, und ihn sofort anzeigen. Ich möchte es nur mit einer PHP - Datei verknüpfen, die den permanenten Blogeintrag auf dem Server erstellt, sodass der Beitrag beim erneuten Laden der Seite noch vorhanden ist.

Das ist Trick. 

Zunächst müssen Sie ein Formular und POST verwenden (da Sie zu speichernde Daten senden).

Dann müssen Sie die Daten irgendwo speichern. Dies erfolgt normalerweise über eine Datenbank. Informieren Sie sich über die PDO-Bibliothek für PHP. Dies ist die Standardmethode, um mit Datenbanken zu interagieren.

Dann müssen Sie die Daten wieder herausziehen. Am einfachsten ist es hier, die Abfragezeichenfolge zu verwenden, um den Primärschlüssel für die Datenbankzeile mit dem Eintrag zu übergeben, den Sie anzeigen möchten.

<a href="showBlogEntry.php?entry_id=123">...</a>

Stellen Sie sicher, dass Sie sich auch mit der SQL-Injection und XSS vertraut machen.

0
Quentin

Wie Sie bereits in Ihrer Frage angegeben haben, haben Sie mehrere Möglichkeiten. Ein sehr grundlegender Ansatz wäre die Verwendung des Tags, das auf Ihre PHP Datei im method-Attribut verweist. So esoterisch es klingen mag AJAX ist jedoch ein vollständigerer Ansatz. Wenn man bedenkt, dass ein AJAX Aufruf (in Kombination mit jQuery) so einfach sein kann wie:

$.post("yourfile.php", {data : "This can be as long as you want"});

Und Sie erhalten eine flexiblere Lösung, beispielsweise zum Auslösen einer Funktion, nachdem die Serveranfrage abgeschlossen wurde. Hoffe das hilft.

0
ferret96

Sie müssen nur die Formulardaten an die Funktion zum Einfügen von PHP-Dateien senden, siehe unten :)

class DbConnect
{
// Database login vars
private $dbHostname = '';
private $dbDatabase = '';
private $dbUsername = '';
private $dbPassword = '';
public $db = null;

public function connect()
{

    try
    {
        $this->db = new PDO("mysql:Host=".$this->dbHostname.";dbname=".$this->dbDatabase, $this->dbUsername, $this->dbPassword);
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e)
    {
        echo "It seems there was an error.  Please refresh your browser and try again. ".$e->getMessage();
    }
}

public function store($email)
{
    $stm = $this->db->prepare('INSERT INTO subscribers (email) VALUES ?');
    $stm->bindValue(1, $email);

    return $stm->execute();
}
}
0
Luke