PHP – die neusten Beiträge

Wordpress Astra Customizer in Teilen resetbar?

Hallo,

Ich habe den Auftrag, für jemanden eine Webseite zu erstellen. Diese wird in WordPress erstellt und dabei wird das "Astra" Theme (Astra Pro) verwendet. Seit einiger Zeit habe ich ein gewisses Problem beim Customizer im Bereich "Header" oder "Footer", bei denen ich bestimmte Elemente (weiß leider nicht wie man die korrekt benennt) wie "Copyright" oder "HTML 1" "HTML 3" nicht mehr bearbeiten kann. Diese Elemente müssten auch mit einem CSS und PHP verknüpft sein.

Mit "nicht mehr bearbeiten" meine ich, dass diese Elemente zwar auf der Webseite vorhanden sind, ich aber deren Inhalt, die Position usw. nicht mehr im Customizer bearbeiten kann. Zudem hängt sich das Customizer-Interface auf, wenn ich jene Elemente anwähle, und ich muss den Customizer neu starten (Strg+R).

Ich habe Zugriff auf den zugrunde liegenden Dateimanager der Webseite (wp-functions etc.), allerdings bin ich in diesem Bereich neu und weiß nicht, wo ich suchen muss. Ich frage, wie ich am besten vorgehen sollte, um das Problem analytisch zu lösen. Im Idealfall muss ich nicht auf ein halbjähriges Backup zurückgreifen, da ich befürchte, vieles dann neu machen zu müssen. Es wäre toll, wenn ich das Problem so lösen könnte.

Ich habe bereits verschiedene Ansätze versucht (Backup-Dateien mit den aktuellen verglichen), bisher jedoch erfolglos, da ich in diesem neuen Terrain tappe und nicht richtig weiß, wo ich suchen soll. Auch ein Blick mit dem Developer Tool in Microsoft Edge hat mir bisher nicht verraten (zumindest augenscheinlich), wo ich die zugrunde liegenden Dateien/Skripte besagter Elemente dateihierarchisch finden kann.

Ich gehe davon aus, dass das Problem vermutlich nicht am Customizer liegt, da ich in der Vergangenheit auch schon durch das Anpassen dieser Elemente das Interface lahmgelegt habe (damals mit Backup gelöst, irgendwann mal vergessen und nun den Mist in der aktuellen Version).

Ich kenne mich relativ "gut" mit anderen Programmiersprachen (C++, C#...) aus, aber mit CSS und HTML bin ich noch nicht so vertraut. Möchte dies anmerken, da ich mir auch einen tendenziell technisch anspruchsvolleren Lösungsansatz, wenn erforderlich, zutrauen würde.

Ich bedanke mich schon einmal herzlich,

Alex

Homepage, HTML, Webseite, CSS, WordPress, PHP, Webentwicklung, Wordpress Theme

(PHP-Script) Wieso funktioniert das einmal und einmal nicht?

Hab mal eine Frage zu einer Formular-PHP-aus-einer-json-Datei-auslese-und-wieder-eintrag Funktion, die ich versuche genauer zu verstehen. Genauer gesagt komm ich da an einer Stelle nicht weiter (weil sich Teile der Funktion scheinbar komplett willkürlich verhält!)

Also wenn ich in PHP eine Funktion in der Struktur hier habe:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $params = [
   "p1" => isset($_POST['p1']) ? $_POST['p1'] : null,
   "p2" => isset($_POST['p2']) ? $_POST['p2'] : null,
   "p3" => isset($_POST['p3']) ? $_POST['p3'] : null,
       "p4" => isset($_POST['p4']) ? $_POST['p4'] : null,
   // A_settings
       "P5" => [
           "SP1" => $_POST['P1'],
           "SP2" => $_POST['P2'],
       ],
   ];

und der Inhalt der auszulesenden json Datei so aussieht:

{
   "p1": "antwort1",
   "p2": "antwort2",
   "p3": "antwort3",
   "p4": "antwort4",
   "self": {
       "P5": {
           "SP1": antwort5,
           "SP2": antwort6
       }
   }
}

klappt scheinbar alles hervorragend. Die Parameter werden gefunden und nach dem Absenden des Formulars korrekt überschrieben.

Wenn ich allerdings wie im folgenden Beispiel etwas mehr Parameter hinzufüge wie in dieser Struktur hier und für die Benennung etwas längere Namenschemen verwende:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $params = [
      /// calculation nr1:
      "Self.P1" => isset($_POST['Self.P1']) ? $_POST['Self.P1'] : null,
      "Self.P2" => isset($_POST['Self.P2']) ? $_POST['Self.P2'] : null,
      "Self.P3" => isset($_POST['Self.P3']) ? $_POST['Self.P3'] : null,
      "Self.P4" => isset($_POST['Self.P4']) ? $_POST['Self.P4'] : null,
      .....
      "Self.P18" => isset($_POST['Self.P18']) ? $_POST['Self.P18'] : null,
      "Self.P19" => isset($_POST['Self.P19']) ? $_POST['Self.P19'] : null,
      "Self.P20" => isset($_POST['Self.P20']) ? $_POST['Self.P20'] : null,
      "Self.P21" => isset($_POST['Self.P21']) ? $_POST['Self.P21'] : null,
      ///
    // A_settings
       "self.A_settings" => [
           "w1" => $_POST['w1'],
           "w2" => $_POST['w2'],
       ],
      // B_settings
       "self.B_settings_2" => [
           "w3" => $_POST['w3'],
           "w4" => $_POST['w4'],
       ],

sieht die json-Datei nach dem Absenden für die ersten einfachen Parameter plötzlich so aus:

{
   "Self.P1": null,
   "Self.P2": null,
   "Self.P3": null,
   .....
    "Self.P21": null,

Nur die verschachtelten Parameter, die danach kommen:

"self.A_settings": {
       "w1": "Antwort1",
       "w2": "Antwort2"
   },
   "self.B_settings_2": {
       "w3": "Antwort3",
       "w4": "Antwort4"
   },

werden nach wie vor korrekt in die Datei geschrieben! 

Weiß einer oder hat eine Theorie wieso das eine problemlos funktioniert und bei der anderen Variante plötzlich systematisch alle einfachen Parameter (also Self.P1-21) den Wert "null" zurückgeben? 

Internet, Webseite, Formular, Code, PHP, Programmiersprache, Webentwicklung, Parameter

PHP Fehler?

Moinsen Leude,

Ich bin gerade etwas am verzweifeln. Ich arbeite noch nicht so lange mit php und stoße die ganze zeit immer wieder auf den gleichen fehler:

Warning: Undefined array key "password" in C:\xampp\htdocs\website\metropolisx\index.php on line 21

Hier die PHP-Datei um die es geht:

<?php
session_start();
require_once "includes/config.php"; // Datenbankverbindung

$error = "";

// Nur fortfahren, wenn das Formular per POST abgesendet wurde
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Überprüfen, ob die Felder 'username' und 'password' in $_POST gesetzt sind
    $username = isset($_POST['username']) ? $_POST['username'] : '';
    $password = isset($_POST['password']) ? $_POST['password'] : '';

    // Überprüfen, ob beide Felder nicht leer sind
    if (!empty($username) && !empty($password)) {
        // Datenbankabfrage, um den Benutzer zu finden
        $stmt = $pdo->prepare("SELECT * FROM accounts WHERE USERNAME = ?");
        $stmt->execute([$username]);
        $user = $stmt->fetch();

        // Wenn der Benutzer existiert und das Passwort korrekt ist
        if ($user && password_verify($password, $user['password'])) {
            $_SESSION['user'] = $user['username'];
            // Weiterleitung zum Dashboard
            header("Location: pages/dashboard.php");
            exit();
        } else {
            $error = "Falsche Anmeldedaten!";
        }
    } else {
        // Fehlermeldung, wenn eines der Felder leer ist
        $error = "Bitte Benutzername und Passwort eingeben!";
    }
}
?>

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Login | MetropolisX</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>

<div class="login-container">
    <h2>MetropolisX - Login</h2>

    <?php if ($error): ?>
        <p class="error"><?php echo htmlspecialchars($error); ?></p>
    <?php endif; ?>

    <form method="post">
        <input type="text" name="username" placeholder="Benutzername" required>
        <input type="password" name="password" placeholder="Passwort" required>
        <button type="submit">Anmelden</button>
    </form>
</div>

</body>
</html>

Wenn einer von euch weiß warum ich diesen fehler die ganze zeit kriege, gebt gerne bescheid. Danke schonmal im vorraus :D

SQL, HTML, Webseite, Code, Datenbank, MySQL, PHP, Programmiersprache, Webdesign, Webentwicklung

PHP: Wie kann ich die Videoladezeit verbessern?

Hallo,

ich habe folgendes Problem:

Ich habe diese PHP-Datei erstellt und bei mir auf meinem iPhone lädt es die Videodatei sehr langsam bis gar nicht. Wenn ich aber auf PC im gleichen Netflix schaue, lädt es sehr schnell.

Ich habe es bei anderen Freunden testen lassen, die auch ein iPhone haben. Bei der einen Person lädt es auch sehr schnell, bei der anderen auch nicht, so wie bei mir. Bei mir lädt es immer nur schnell, wenn ich mobile Daten anhabe.

Die Videodateien sind 2-7 GB groß.

Vielleicht kann jemand eine Lösung für mich finden, das zu beheben. Wichtig ist, dass ich die Größe der Videodateien nicht verkleinern kann. Das heißt, es muss trotzdem schnell die Videodatei laden.

Ich sage schon einmal danke an die Person, die sich die Zeit und Mühe nimmt, mir zu helfen.

Bei einer Verbindung mit dem normalen Heimnetz sieht es auf dem iPhone so aus:

Wenn ich über LTE (mobile Daten) lade:

Der PHP-Code:

<?php 
  require 'db.php'; // Die Datenbankverbindung einbinden
  require 'is_premium.php'; // Die Datenbankverbindung einbinden

  // Überprüfen, ob eine ID übergeben wurde
  if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    die('Ungültige Film-ID.');
  }

  $movie_id = intval($_GET['id']);
  // Film aus der Datenbank abfragen
  $stmt = $db->prepare('SELECT * FROM movies WHERE id = ?');
  $stmt->bind_param('i', $movie_id);
  $stmt->execute();
  $result = $stmt->get_result();

  if ($result->num_rows === 0) {
    die('Film nicht gefunden.');
  }

  $movie = $result->fetch_assoc();
  $stmt->close();
  $db->close();

  // Erkennen, ob die URL ein lokales Video ist oder über HTTPS geladen werden soll
  $is_local_video = strpos($movie['video'], 'uploads/videos/') === 0;
  $is_https = strpos($movie['video'], 'https://') === 0;
  $thumbnail = htmlspecialchars($movie['thumbnail']); // Thumbnail aus der Datenbank
?>
<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title><?php echo htmlspecialchars($movie['name']); ?> - MovieVel</title>
  <style>
   #css code
  </style>
</head>
<body>
  <div class="container">
    <div class="movie-detail">
      <h1><?php echo htmlspecialchars($movie['name']); ?></h1>
      <!-- Movie Video -->
      <div class="<?php echo $is_local_video ? 'video-container' : 'iframe-container'; ?>">
        <div class="play-btn">
          &#9654; <!-- Play-Symbol -->
        </div>
        <?php if ($is_local_video): ?>
          <!-- Video für progressive Web-Optimierung mit Bild-in-Bild-Unterstützung -->
          <video id="video-player" controls autoplay preload="auto" poster="<?php echo $thumbnail; ?>"
              onclick="this.requestPictureInPicture()" muted playsinline>
            <source src="<?php echo htmlspecialchars($movie['video']); ?>" type="video/mp4">
            Ihr Browser unterstützt dieses Videoformat nicht.
          </video>
        <?php elseif ($is_https): ?>
          <iframe 
            src="<?php echo htmlspecialchars($movie['video']); ?>" 
            allowfullscreen>
          </iframe>
        <?php else: ?>
          <p>Video konnte nicht geladen werden. Überprüfen Sie die URL oder die Serverkonfiguration.</p>
        <?php endif; ?>
      </div>
      <!-- Movie Description -->
      <div class="description-box">
        <h2>Über den Film</h2>
        <p><?php echo htmlspecialchars($movie['description']); ?></p>
      </div>
      <!-- Back Button -->
      <a href="index.php" class="back-btn">Zurück zur Übersicht</a>
    </div>
  </div>
  <script>
    const video = document.getElementById('video-player');
     
    // Überprüfen, ob Picture-in-Picture unterstützt wird
    if ('pictureInPictureEnabled' in document) {
      video.addEventListener('click', async () => {
        try {
          // Versuchen, Bild-in-Bild zu aktivieren
          if (document.pictureInPictureElement !== video) {
            await video.requestPictureInPicture();
          } else {
            // Wenn das Video schon im Bild-in-Bild-Modus ist, es wieder schließen
            await document.exitPictureInPicture();
          }
        } catch (err) {
          console.error('Fehler beim Wechseln in den Bild-in-Bild-Modus:', err);
        }
      });
    }
  </script>
</body>
</html>
Bild zum Beitrag
Homepage, SQL, HTML, Webseite, CSS, JavaScript, HTML5, Code, Datenbank, MySQL, PHP, Webdesign, Webentwicklung, phpMyAdmin

wie übergebe ich Daten mit Input?

Die Anwendung von Input ist eigentlich klar. Die gestellte Frage soll aber auf mein Problem hinweisen denn im dargestellten Fall habe ich Probleme.

if ($sichern == true){
        for($i=1; $i<4; $i++){
            echo "<input type='hidden' name='vonMod[$i]' value='$vonMod[$i]'>";
            echo "<input type='hidden' name='bisMod[$i]' value='$bisMod[$i]'>";
        }
        echo "<p align='center'><br><input class='backa' type='button' value='nein, zur&uuml;ck' onclick='history.back()'>&nbsp;&nbsp;";
        echo "<input class='speichern' type='submit' name='speichern' formaction='speichern.php' value='ja, speichern'><p>&nbsp;</p>";
    }else{
        echo "<p align='center'><br><input class='backa' type='button' value='nein, zur&uuml;ck' onclick='history.back()'>&nbsp;&nbsp;";
        echo "<input class='speichern' type='submit' name='kontrolle' formaction='termine_change.php?sichern' value='ja, speichern'><p>&nbsp;</p>";
    }

Mit der Datenweitergabe via Input name='kontrolle' gibt es keine Probleme!

Die Datenweitergabe mit name='speichern' funktioniert nicht! Die if-Abfrage nach "$sichern == true" wurde überprüft und wird ausgeführt.

Verschiebe ich den Input name='speichern' ausserhalb der Abfrage "$sichern == true" wird der Befehl ausgeführt.

Was kann ich machen, damit ich nach der Abfrage "$sichern == true" den Input-Befehl ausführen kann. Bei der Probiererei hatte ich zu dem Input noch ein onclick mit einem Alert-fenster angehängt. Alert funktionierte, nur input nicht!

Webseite, PHP, Programmiersprache

Wie kann der Scroll-Button ausgeblendet werden bzw. eingeblendet?

Warum funktioniert es nicht, der Button bleibt von Anfang bis Ende der Seite eingeblendet.

Ich möchte eine JS -Funktion schreiben, die diesen Button erst einblendet, wenn der Nutzer ein Stück weit herunter gescrollt hat. Ebenso soll der Button versteckt werden, wenn der Nutzer wieder nach oben gescrollt hat.

Mein bisheriger Code:

HTML:  
   <a href="#" id="topButton">Nach oben</a>

CSS: 
#topButton {
    position: fixed;
    bottom: 20px; /* Abstand vom unteren Rand */
    right: 30px; /* Abstand vom rechten Rand */
    background-color: #007BFF; /* Blau */
    color: white; /* Weißer Text */
    padding: 10px 15px; /* Innenabstand */
    border: none; /* Kein Rand */
    border-radius: 5px; /* Abgerundete Ecken */
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); /* Schatten */
    text-decoration: none; /* Keine Unterstreichung */
    font-size: 14px; /* Schriftgröße */
    cursor: pointer; /* Zeiger-Hand-Symbol */
    transition: background-color 0.3s ease, transform 0.2s ease; /* Animation */
  }


  #topButton:hover {
    background-color: #0056b3; /* Dunkleres Blau beim Hover */
    transform: translateY(-2px); /* Leichtes Anheben beim Hover */
  }


  #topButton:active {
    transform: translateY(0); /* Zurücksetzen bei Klick */
  }

JavaScript:
// Element auswählen
let topButton = document.getElementById("topButton");


// Scroll-Event-Listener hinzufügen
window.addEventListener("scroll", function() {
  // Zeigt den Button an, wenn mehr als 50px gescrollt wurde
  if (window.scrollY > 50) {
    topButton.style.display = "block"; // Button wird sichtbar
  } else {
    topButton.style.display = "none"; // Button wird versteckt
  }
});


// Klick-Event für den Button
topButton.addEventListener("click", function(event) {
  event.preventDefault(); // Standard-Aktion verhindern
  window.scrollTo({
    top: 0, // Scrollt nach oben
    behavior: "smooth" // Sanftes Scrollen
  });
});
Homepage, App, Programm, HTML, Webseite, programmieren, CSS, JavaScript, HTML5, Code, PHP, Programmiersprache, Webdesign, Webentwicklung, Frontend, Visual Studio Code

Bestes WordPress Hosting für 5.95€?

Ich habe damals eine WordPress Website für einen Kunden erstellt bei All-Inkl und habe das Privat Paket (4.99€) mit Zusatzoption SSL-Erweiterung (0,95€) Zusatzoption SSL-Erweiterung.
Es hat 3 Domains Inklusive aber wir brauchen das garnicht mehr da die alten Domains nichtmehr indexiert sind, die haupt domain reicht maximal 2 Domains.

Der Punkt ist aber das die Seite mit WordPress gemacht wurde und Elementor, trotz Optimierungen kommt es nicht auf so tolle Ergebnisse.


Und der zweite Punkt ist er möchte nichts wirklich ändern an dem Design und möchte seine Videos drinne lassen.

Sind hochwertig produziert und schöne Videos gehen 1-2 Minuten und sollen für ihn der Hauptfokus sein.

  • Ob ein CDN etwas bringen würde denke ich nicht da die Kunden ausschließlich lokal sind. CDN ist doch eher etwas für Weltweit.
  • Bilder sind alle auf Webp Konvertiert mit 92% Beibehaltung der Qualität, da habe ich bereits massiv eingespart ohne sichtbaren Qualitätsverlust
  • Video ist etwas schwierig zu Komprimieren / Qualität zu verringern, es wäre mir lieber wenn es ein Widget gebe für Elementor das die eigenschaft wie Youtube hätte aber ohne YouTube das man das Video selber auf "auto" laden würde erstmal und zeit gewinnt. Ob webm einen großen unterschied macht bin ich mir nicht sicher
  • Caching Plugin habe ich "WP Optimize" und auch HTML,CSS,JS minimieren aktiviert, bisher keine Konflikte oder Fehler.
  • Das Cookie Plugin verlangsamt auch stark die Ladezeiten ist mir aufgefallen, kennt ihr ein sehr leichtgewichtiges und cleanes Cookie Opt Plugin womit man auch Google Maps Consent einholen kann?

Ich kann also nur die technische Seite Optimieren und denke mit einem besseren Hosting das nicht Allgemein ist wie All Inkl ich einen höheren Score erreichen kann beim Speed Test.

Homepage, HTML, Webseite, WordPress, JavaScript, CMS, PHP, SEO, Strato, Webdesign, Webentwicklung, Webhosting, Webserver, all-inkl, divi, Hetzner, Elementor, hostinger, Elementor Pro, ionos

Website lädt Datei nicht hoch, warum?

Moin, kennt sich vielleicht jemand mit PHP und Html aus und weiß warum beim Upload der Datei nicht das Script "upload.php" ausgeführt wird? Versuche mich gerade beim Scripten, stehe allerdings gerade voll auf dem Schlauch... Danke!

<?php include 'header.php'; ?>
<?php
if(!isset($_SESSION['email'])){
  header('location:login.php');
  $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
}
 ?>
      <div class="breadcrumb">
        <div class="container">
            <a class="breadcrumb-item" href="index.php">Home</a>
            <span class="breadcrumb-item active">Welecome <?php echo $_SESSION['email'] ?></span>
            <span class="breadcrumb-item active">Upload Video</span>
        </div>
    </div>
    <section class="static about-sec">
        <div class="container">
            <h1>Upload Video</h1>
            <div class="form">
                <form class="" action="videoUpload.php" method="post">
                    <div class="row">
                        <div class="col-md-6">
                            <input type="hidden" name="id" value="">
                            <label for="name">Name of Video:</label>
                            <input type="text" name="name" value="" placeholder="Fantasy World" required>
                            <label for="video_url">Video URL</label>
                            <input type="file" name="video_url" required>
                            <label for="description">Description</label>
                            <input type="text" name="description" value="" placeholder="">
                            <label for="category">Category</label>
                            <select name="category">
                              <option value="Classic">Classic</option>
                              <option value="Adventerous">Adventerous</option>
                              <option value="Nature">Nature</option>
                              <option value="Others">Others</option>
                            </select>
                          </div>
                        </div>
							<div class="col-lg-8 col-md-12">
							<form action="upload.php" method="post" enctype="multipart/form-data">
							<input type="submit" class="btn black" value="Upload Image" name="submit">
							</form>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </section>


    <?php include 'footer.php';?>
HTML, Webseite, HTML5, Code, Datenbank, MySQL, PHP, Programmiersprache, Webdesign, Webentwicklung

Problem mit falscher Darstellung des Euro-Zeichens (€) in FPDF (erscheint als "â")?

Die restlichen Inhalte werden korrekt dargestellt, aber das Euro-Zeichen scheint nicht richtig kodiert zu werden. Meine Vermutung ist, dass es an der Zeichenkodierung (UTF-8 oder ISO-8859-1) oder an der verwendeten Schriftart liegt.

Hat jemand eine Idee, wie ich dieses Problem beheben kann?

Vielen Dank im Voraus für eure Hilfe!


<?php


session_start();
include "db.php";


// Holen der Bestelldaten
$query = "SELECT 
            u.vorname, 
            u.nachname, 
            b.bestelldatum, 
            b.bestelladresse, 
            bp.anzahl, 
            bp.preis, 
            p.produktname 
          FROM 
            user u
          JOIN 
            bestellungen b ON u.id_user = b.id_user
          JOIN 
            bestellungen_products bp ON b.id_bestellung = bp.id_bestellung
          JOIN 
            products p ON bp.id_product = p.id_product 
          WHERE 
            b.id_bestellung = ?";


$id_order = $_GET["order_id"];
$stmt = $conn->prepare($query);
$stmt->bind_param("i", $id_order);
$stmt->execute();
$result = $stmt->get_result();


$order = $result->fetch_assoc();
$rechnungs_nummer = $id_order;
$rechnungs_datum = $order["bestelldatum"];
$lieferdatum = date("Y-m-d", strtotime($rechnungs_datum . " +2 weeks"));


// Neues PDF erstellen
require_once('fpdf/fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();


// Titel und Rechnungsinformationen
$pdf->SetFont('Helvetica', 'B', 16);
$pdf->Cell(190, 10, 'Rechnung', 0, 1, 'C');
$pdf->SetFont('Helvetica', '', 12);
$pdf->Cell(100, 10, 'Rechnungsnummer: ' . $rechnungs_nummer);
$pdf->Cell(90, 10, 'Rechnungsdatum: ' . $rechnungs_datum, 0, 1);
$pdf->Cell(100, 10, 'Lieferdatum: ' . $lieferdatum, 0, 1);


// Empfängerinformationen
$pdf->Ln(10);
$pdf->Cell(100, 10, 'Kunde:');
$pdf->Ln(5);
$pdf->Cell(100, 10, $order["vorname"] . " " . $order["nachname"]);
$pdf->Ln(5);
$pdf->Cell(100, 10, $order["bestelladresse"]);


// Postenübersicht
$pdf->Ln(15);
$pdf->SetFont('Helvetica', 'B', 12);
$pdf->Cell(90, 10, 'Produkt', 1);
$pdf->Cell(30, 10, 'Menge', 1);
$pdf->Cell(30, 10, 'Preis', 1);
$pdf->Cell(40, 10, 'Gesamt', 1, 1);
$pdf->SetFont('Helvetica', '', 12);


$gesamtpreis = 0;
do {
    $produktname = $order["produktname"];
    $anzahl = $order["anzahl"];
    $preis = $order["preis"];
    $gesamt = $anzahl * $preis;
    $gesamtpreis += $gesamt;


    $pdf->Cell(90, 10, $produktname, 1);
    $pdf->Cell(30, 10, $anzahl, 1, 0, 'C');
    $pdf->Cell(30, 10, number_format($preis, 2, ',', '') . ' €', 1, 0, 'R');
    $pdf->Cell(40, 10, number_format($gesamt, 2, ',', '') . ' €', 1, 1, 'R');
} while ($order = $result->fetch_assoc());


// Gesamtsumme
$pdf->SetFont('Helvetica', 'B', 12);
$pdf->Ln(5);
$pdf->Cell(150, 10, 'Gesamtsumme:', 0, 0, 'R');
$pdf->Cell(40, 10, number_format($gesamtpreis, 2, ',', '') . ' €', 0, 1, 'R');


// Ausgabe des PDFs
$pdf->Output('F', 'Rechnung_' . $rechnungs_nummer . '.pdf');


//header("location:mail.php?order_id=$id_order")
header("location:confirmation.php?order_id=$id_order")
?>


Webseite, PHP

Fokus-Keyphrase Yoast SEO - Beispiel?

Bin noch relativ neu mit SEO obwohl ich schon lange Webentwicklung mache und WordPress nutze und da ist das bekannteste wahrscheinlich Yoast SEO (oder Rank math). Ich hatte Yoast installiert und überall mit ChatGPT lesbare Titel erstellen lassen zb. Startseite – Fitnessstudio Firma XY | Fitness in Dortmund, Essen & Hamburg
Bei Fokus-Keywords habe ich [Firma XY Fitness Dortmund Essen Hamburg Kraftsport Kardio Zirkeltraining Bodybuilding Gruppentraining Personal Training Sauna [bekannter Inhaber]] ohne Komma.
(Als einfaches Beispiel, es geht nicht um Fitness).
Ich denke mal dass ich das Fokus Keyword falsch verstanden habe und das man auch nur 1 einziges Fokus Keyword haben darf wie [Personal Training]?
Und man stark auf einen Vorteil gegenüber der Konkurenz gehen soll mit dem Keyword wie das Personal Training im Vordergrund steht und nichts anderes oder nichts anderes als Erholungssport (Zumindest im Free Plan glaube ich).
Die Sache ist aber das dieses Unternehmen beispielsweise einfach "nur" besser ist (ist nicht mein unternehmen deswegen sag ich die wahrheit) als die anderen.

Es ist klar das Fitness Studios alle dasselbe anbieten, ähnliche Preise haben und alle wahrscheinlich gut sind. Nur wenn dieses Unternehmen allgemein besser ist und nicht das Rad neu erfindet oder mit irgendeinem Quatsch wirbt was macht man da ? Einfach "Premium" oder "Hochwertig" nutzen ? Das machen schon die Konkurenz obwohl es garnicht so ist anhand der Website Qualität.
Gibt es Gruppen wo man andere Leute mal drüber gucken lassen kann und nach der Meinung Fragen kann ?
Englisch Sprachige Foren kenne ich bringt mir aber nicht viel wenn sie die Sprache nicht können und ich möchte nicht Outsourcen sondern SEO besser verstehen und erlernen als Webentwickler. Die Technische Seite kenne ich schon wie Performance und Ladezeiten, Nutzerfreundlichkeit darauf habe ich geachetet. Nur ist Yoast SEO und Wordpress etwas anders als wenn man mit React/Next.js arbeitet

Computer, Marketing, Homepage, Internet, Browser, Web, HTML, IT, Webseite, CSS, WordPress, JavaScript, Suchmaschine, CMS, Drupal, Informatik, PHP, Programmiersprache, SEO, Typo3, Webdesign, Webentwicklung, React, SEO-Tool, Laravel

Python API Spam Prevention?

Hallo Freunde,

ich nutze ein Python Script das automatisch nach erfolgreicher Registrierung ein JSON String zu meiner Website sendet, per requests.post im Format: https://[URL]/upload.php

Von dort werden die Daten verarbeitet und in der Datenbank eingetragen.

Nun ist mir aber klar, dass natürlich jeder theoretisch die URL entnehmen könnte, und ein kleines Script erstellen kann, das permanent Anfragen sendet und damit die Datenbank mit Invalider Daten füllt.

Nun würde ich gerne erfahren, was man dagegen tun kann!

Mit freundlichen Grüßen

SQL, Webseite, Code, Datenbank, MySQL, PHP, Python, Python 3, JSON

Wie kann ich einen Button nach dem Laden einer Webseite aktiviert aussehen lassen?

Ich habe mir für mein Intranet ein kleines Video-Portal programmiert - das eigentlich ganz gut funktioniert.
Oben gibt es eine aufklappbare Ansicht mit Haupt und Unterkategorien und wenn eine Unter-Kategorie angeklickt wird öffnet sich die Seite mit einer Übersicht relevanter Videos.

Die Haupt-Kategorie gebe ich als URL-Parameter mit -> das funktioniert auch und es wird verdeckt die zu letzt verwendete Hauptkategorie angewählt.

Was nicht funktioniert, ist den Button für die aktuelle Hauptkategorie im Reitermenü so hervor zu heben als wenn er angeklickt wurde - bzw. den Button zu aktivieren.

JavaScript:

function openCity(evt, cityName) {
  // Declare all variables
  var i, tabcontent, tablinks;


  // Get all elements with class="tabcontent" and hide them
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].style.display = "none";
  }


  // Get all elements with class="tablinks" and remove the class "active"
  tablinks = document.getElementsByClassName("tablinks");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].className = tablinks[i].className.replace(" active", "");
  }

PHP-Script:


$cat = "Musik";
if (isset($_GET['cat']))
{
$cat = ($_GET['cat']);
}

echo '<details><summary> Kategorien: </summary>';
echo '<div class="tab">';

echo '<button type="button" name="Musik" class="tablinks" onclick="openCity(event, \'Musik\')">Musik</button>
<button type="button"  name="Anleitungen" class="tablinks" onclick="openCity(event, \'Anleitungen\')">Anleitungen</button>
<button type="button"  name="Kochen" class="tablinks" onclick="openCity(event, \'Kochen\')">Kochen</button>
<button type="button"  name="Backen" class="tablinks" onclick="openCity(event, \'Backen\')">Backen</button>
<button type="button"  name="Heimwerken" class="tablinks" onclick="openCity(event, \'Heimwerken\')">Heimwerken</button>';
  
echo '</div>';

echo '<!-- Tab content -->
<div id="Musik" class="tabcontent">
<div style="column-count: 5;">
'.$category_Musik.'
</div>
</div>

<div id="Anleitungen" class="tabcontent">
<div style="column-count: 5;">
'.$category_Anleitungen.'
</div>
</div>

<div id="Kochen" class="tabcontent">
<div style="column-count: 5;">
'.$category_Kochen.'
</div>
</div>

<div id="Backen" class="tabcontent">
<div style="column-count: 5;">
'.$category_Backen.'
</div>
</div>

<div id="Heimwerken" class="tabcontent">
<div style="column-count: 5;">
'.$category_Heimwerken.'
</div>
</div>';

echo '</details>';

echo '<SCRIPT type="text/javascript" language="JavaScript">
openCity(event, \''.$cat.'\'); 
</SCRIPT>';

CSS-Definitionen:



/* Style the tab */
.tab {
  overflow: hidden;
  border: 1px solid #ccc;
  background-color: #f1f1f1;
}


/* Style the buttons that are used to open the tab content */
.tab button {
  background-color: inherit;
  float: left;
  border: none;
  outline: none;
  cursor: pointer;
  padding: 14px 16px;
  transition: 0.3s;
}


/* Change background color of buttons on hover */
.tab button:hover {
  background-color: #ddd;
}


/* Create an active/current tablink class */
.tab button.active {
  background-color: #ccc;
}


/* Style the tab content */
.tabcontent {
  display: none;
  padding: 6px 12px;
  border: 1px solid #ccc;
  border-top: none;
}

so sieht es aus:

so soll es nach dem Laden der Seite aussehen:

Hat jemand eine Idee wie ich den Button für die aktuelle Kategorie beim Laden der Seite automatisch aktivieren kann?

Bild zum Beitrag
HTML, Webseite, CSS, JavaScript, HTML5, Code, PHP, Webdesign, Webentwicklung

Meistgelesene Beiträge zum Thema PHP