PHP – die neusten Beiträge

PHP Warning: Undefined array key "status"?

Hey,

Ich habe ein Array in PHP programmiert, welches per MySQL alle Sachen selektiert.

Nun werden aber die Arrays nicht gefunden.

Code:

$stmt = $link->prepare('SELECT * FROM tickets ORDER BY created DESC');
$stmt->execute();
$resultSet = $stmt->get_result();

// pull all results as an associative array
$tickets = $resultSet->fetch_all();

<?php foreach ($tickets as $ticket): ?>
  <a href="view.php?id=<?= $ticket['id'] ?>" class="ticket">
    <span class="con">
      <?php if ($ticket['status'] == 'open'): ?>
        <i class="far fa-clock fa-2x"></i>
      <?php elseif ($ticket['status'] == 'resolved'): ?>
        <i class="fas fa-check fa-2x"></i>
      <?php elseif ($ticket['status'] == 'closed'): ?>
        <i class="fas fa-times fa-2x"></i>
      <?php endif; ?>
    </span>
    <span class="con">
      <span class="title"><?= htmlspecialchars($ticket['title'], ENT_QUOTES) ?></span>
      <span class="msg"><?= htmlspecialchars($ticket['msg'], ENT_QUOTES) ?></span>
    </span>
    <span class="con created"><? date('F dS, G:ia', strtotime($ticket['created'])) ?></span>
  </a>

Fehler:

C:\xampp\htdocs\ticket.php on line 271
" class="ticket">
Warning: Undefined array key "status" in C:\xampp\htdocs\ticket.php on line 273

Warning: Undefined array key "status" in C:\xampp\htdocs\ticket.php on line 275

Warning: Undefined array key "status" in C:\xampp\htdocs\ticket.php on line 277

Warning: Undefined array key "title" in C:\xampp\htdocs\ticket.php on line 282

Warning: Undefined array key "msg" in C:\xampp\htdocs\ticket.php on line 283

Kann mir jemand sagen, ob ich etwas übersehen habe?

Computer, Webseite, programmieren, MySQL, PHP, Webentwicklung

Php Hashen mit "Salz" / PASSWORD_DEFAULT?

$password = "passwort";
$hashed = password_hash($password, PASSWORD_DEFAULT);
if(password_verify($password, $hashed)){
    echo $hashed;
}

Also so würde ich jetzt den string "passwort" hashen mit etwas vollkommen zufälligem / salz und es zb auf meiner datenbank speicher, alles schön und gut.

Jetzt kommt das große aber, wenn ich die Seite von irgendwo anders aufrufe. Dann mich einloggen will wird das eingegebene wieder gehasht mit einem salz um es mit der sql datenbank abzugleichen.

Das geht aber garnicht weil dieses Salz doch immer ein anderer ist wenn ihr versteht was ich meine.

Hashes ohne salz vergleichen kriege ich schonmal ohne probleme hin.

zum beispiel so würde mein login/abgleich mit der datenbank aussehen :

if(isset($_POST["username"]) && isset($_POST["password"])){

$hash = hash("sha512", $_POST["password"]);

$mysqli1 = new mysqli($servername, $user, $pw, $db);
$result = $mysqli1->query('SELECT id FROM user WHERE username = "'. $_POST["username"]. '"  ');
$result1 = $mysqli1->query('SELECT id FROM user WHERE password = "'. $hash. '"  ');

if($result->num_rows == 1 and $result1->num_rows == 1 ) {
  echo "Login erfolreich"; 
} else {
    echo "Falsches Passwort oder Nutzername";
}
$mysqli1->close();
}

Hab jetzt mysqli benutzt weil es irgendwie übersichtlicher ist, und ob das anfällig für Sql Injections oder so ist spielt eigentlich keine rolle erstmal. Manche stört das

PC, Server, Computer, Technik, Web, Webseite, programmieren, Passwort, Hash, Informatik, IT-Sicherheit, Kryptographie, MySQL, PHP, Programmiersprache, Technologie, web-development, Web Developer

PHP Error durch require()?

Hi, ich raff grad gar nix mehr, ich hab eine PHP Klasse dbConnection, in der ich mit require ein php File (settings.php) einbinde. Das einbinden funktioniert auch, nur binde ich innerhalb von settings.php ein weiteres php File ein, functions.php. Das wiederrum funktioniert nicht. Ich weiß, meine Erklärung ist bissle kompliziert, daher hier der Code:

dbConnection.php

<?php

try {
    require dirname($_SERVER["DOCUMENT_ROOT"]) . "/php/settings/settings.php";
} catch (Throwable|mysqli_sql_exception $exception) {
    error_log(date("d.m.Y, H:m:s") . " | " . $exception . "\n\n", 3, "/hp/cz/aa/gf/www/domains/domain.com/php/logs/php-errors.log");
    header("location: /error/?error=500");
    exit();
}

class dbConnection
{
...
}

settings.php

<?php

try {
    date_default_timezone_set("Europe/Berlin");
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    require dirname($_SERVER["DOCUMENT_ROOT"]) . "/php/functions/functions.php";
} catch (Throwable|mysqli_sql_exception $exception) {
    error_log(date("d.m.Y, H:m:s") . " | " . $exception . "\n\n", 3, "/hp/cz/aa/gf/www/domains/domain.com/php/logs/php-errors.log");
    header("location: /error/?error=500");
    exit();
}

hier die relevanten Pfade:

domain.com/php/classes/dbConnection.php

domain.com/php/settings/settings.php

domain.com/php/functions/functions.php

Der Fehler muss an der in settings.php Datei liegen, da ich schon einmal vor und nach dem require in settings.php ein die("hier"); gemacht habe und dabei als das die("hier"); VOR dem

require dirname($_SERVER["DOCUMENT_ROOT"]) . "/php/functions/functions.php";

"hier" ausgegeben hat, und NACH dem

require dirname($_SERVER["DOCUMENT_ROOT"]) . "/php/functions/functions.php";

mir angezeigt wurde, dass diese Seite nicht funktionieren würde. Komisch ist auch, dass der Fehler nicht aufgefangen wird, daher bin ich gerade etwas ratlos. Hoffe meine Frage ist verständlich, ansonsten gerne einfach nachfragen :)

Computer, Internet, HTML, Webseite, programmieren, MySQL, PHP

Verbindung zur Datenbank checken - PHP?

Hi, ich hab folgende Funktion in einer Klasse dbConenction:

private mixed $connection;

public function __construct()
{
    return $this->connect();
}

private function connect()
{
    try {
        $host = "localhost";
        $username = "USER_NAME";
        $pwd = "PWD";
        $database = "DB_NAME";
        $this->connection = new mysqli($host, $username, $pwd, $database);

        if ($this->connection->connect_error) {
            throw new Exception("Connection to database failed. | " . $this->connection->connect_error);
        }
        return $this->connection;
    } catch (Exception $exception) {
        $this->connection = null;
        databaseErrorHandling($exception);
        return null;
    }
}

Die Verbindung zur Datenbank funktioniert auch, ich kann Queries ausführen. Doch mein Problem, wenn ich zum Beispiel den Username für die Datenbank ändere, soll eigentlich durch

if ($this->connection->connect_error)

eine Exception geworfen werden, weil die Verbindung ja nicht aufgebaut werden kann, da der Username falsch ist. Das Gleiche funktioniert auch nicht, wenn ich zum Beispiel das Passwort ändere. Hab in den Docs von PHP nachgelesen und dort haben die das genauso gemacht...

$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

Jemand eine Idee, warum das nicht funktioniert, so wie es funktionieren sollte :D, oder Verbesserungsvorschläge?

Danke für jede Hilfe!!!

Computer, SQL, HTML, Webseite, programmieren, Datenbank, MySQL, PHP

Javascript nach Button Klick auf andere Webseite leiten?

Moin!

Ich hab folgende Frage: Wie kann ich es realisieren, dass, wenn ich auf den Success Button klicke, ich dann auf eine andere Seite geleitet werde? Der Link dahin ist auch ein Teil dynamischer PHP Code. Ihr werdet es sehen :)

Hier mein Code:

"use strict";!function(){const n=document.querySelector(".suspend-user"),t=(n&&(n.onclick=function(){Swal.fire({title:"Bist du sicher?",text:"Du kannst diesen Benutzer nicht wiederherstellen!",icon:"warning",showCancelButton:!0,confirmButtonText:"Fortsetzen",cancelButtonText:"Abbrechen",customClass:{confirmButton:"btn btn-primary me-2",cancelButton:"btn btn-label-secondary", text:"Abrechen"},buttonsStyling:!1}).then(function(n){n.value?Swal.fire({icon:"success",title:"Benutzer gelöscht!",text:"Der Benutzer wurde gelöscht.",customClass:{confirmButton:"btn btn-success"}}):n.dismiss===Swal.DismissReason.cancel&&Swal.fire({title:"Vorgang abgebrochen",text:"Der Benutzer wurde nicht gelöscht.",icon:"error",customClass:{confirmButton:"btn btn-success"}})})}),document.querySelectorAll(".cancel-subscription"));t&&t.forEach(n=>{n.onclick=function(){Swal.fire({text:"Are you sure you would like to cancel your subscription?",icon:"warning",showCancelButton:!0,confirmButtonText:"Yes",customClass:{confirmButton:"btn btn-primary me-2",cancelButton:"btn btn-label-secondary"},buttonsStyling:!1}).then(function(n){n.value?Swal.fire({icon:"success",title:"Unsubscribed!",text:"Your subscription cancelled successfully.",customClass:{confirmButton:"btn btn-success"}}):n.dismiss===Swal.DismissReason.cancel&&Swal.fire({title:"Cancelled",text:"Unsubscription Cancelled!!",icon:"error",customClass:{confirmButton:"btn btn-success"}})})}})}();

Und ich möchte gern auf folgende Seite weitergeleitet werden:

index.php?page=deleteUser&&delete_id=<?=$user_data['user_id']?>

Könntet ihr mir hier behilflich sein? Wenn ich auf den Button "Fortsetzen" klicke erscheint noch eine Bestätigungsnachricht, wenn man dann auf "OK" klickt, soll der Redirect ausgeführt werden.

Danke euch im Vorraus!

HTML, programmieren, JavaScript, PHP, Technologie, Webentwicklung

Xampp website nicht über iphone erreichbar?

Habe in den browser meine ip adresse eingegeben

und bin mit dem selben Router verbunden ( aber der pc über das strom mit einem lan kabel )

xampp apache webserver läuft.

habe gehört das es möglich sein soll aber es funktioniert nicht.

Auch als ich http:// + meine ip eingegeben habe erschien irgendwas mit pdf konnte nicht geladen werden

wie mach ich das ich die seite jetzt aufrufen kann über mein handy ?

(und zweite frage : wie mache ich das mit dem router weiterleiten falls jemand von ausserhalb die seite besuchen will.

Kenne plattformen auf der man das einfach hochladen kann aber möchte es halt so machen zum lernen.)

Computer, Internet, Technik, Webseite, JavaScript, Informatik, IP-Adresse, PHP, Router, Technologie, xampp

Warum ist $_POST hier leer?

Hi, arbeite gerade an nem Kontaktformular, welches mit JQuery und Ajax gesendet werden soll. Hier der Code:

let form = $(this);
let actionUrl = "assets/php/contact.php";

$.ajax({
    type: "POST",
    url: actionUrl,
    contentType: "application/json",
    data: form.serialize(),
    success: function (backendError) {
        console.log(backendError);
        errorHandler(backendError);
    },
    error: function () {
        console.log("failure");
        alert("Internal Error occured. Please try again later");
    }
});

hier der PHP Code zum senden:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        $errors = array();
        $name = "";
        $email = "";
        $human = "";
        $message = "";

        if (empty($_POST["name"])) {
            $errors[] = "name";
        } else {
            $name = $_POST["name"];
        }

        if (empty($_POST["email"])) {
            $errors[] = "email";
        } else {
            $email = $_POST["email"];
        }

        if (empty($_POST["human"])) {
            $errors[] = "human";
        }

        if (empty($_POST["message"])) {
            $errors[] = "message";
        } else {
            $message = $_POST["message"];
        }

        if (count($errors) === 0) {
            $to = "my@email.de";
            $subject = "Kontaktformular - " . $name;
            $message = "";
            $additional_headers = array(
                "From" => $email,
                "Reply-To" => $email,
                "X-Mailer" => phpversion()
            );

            mail($to, $subject, $message, $additional_headers);
            $response["error"] = false;
            echo json_encode($response);
            exit;
        } else {
            $response["error"] = $errors;
            echo json_encode($response);
            exit;
        }
    } catch (Exception $exception) {
        // in Log File Time + Error + IP
        exit;
    }
}

mein Problem: das POST Array is leer. Habs mir mal ganz oben ausgeben lassen, und stand nix drin, obwohl jquery die inputfelder per POST an das PHP File sendet. Ich denke, dass ich irgendwas bei der $ajax methode falsch gemacht habe, und es deshalb net funktioniert. bin am verzweifeln :) danke für jede Hilfe!

Computer, HTML, Webseite, programmieren, JavaScript, AJAX, JQuery, PHP

Umstellung auf PHP 8.0 funktioniert nicht. Was muss ich tun?

Hallo zusammen,

wir haben die Website [...] unseres Kunden bei Strato liegen. Hier möchten wir nun die PHP Version von 7.3 auf 8.0 umstellen. Leider zerschießt es immer beim Umstellen die Seite und es wird folgendes angezeigt:

"
Deprecated: Required parameter $handle follows optional parameter $condition in /mnt/web203/d0/72/54211272/htdocs/wp-content/themes/enfold/framework/php/function-set-avia-frontend.php on line 1565

Deprecated: Required parameter $handle follows optional parameter $condition in /mnt/web203/d0/72/54211272/htdocs/wp-content/themes/enfold/framework/php/function-set-avia-frontend.php on line 1588

Deprecated: Required parameter $overwrite_key follows optional parameter $params in /mnt/web203/d0/72/54211272/htdocs/wp-content/themes/enfold/config-woocommerce/config-356.php on line 1433

Deprecated: Required parameter $overwrite_value follows optional parameter $params in /mnt/web203/d0/72/54211272/htdocs/wp-content/themes/enfold/config-woocommerce/config-356.php on line 1433 Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /mnt/web203/d0/72/54211272/htdocs/wp-content/themes/enfold/functions-enfold.php on line 324
"

Im Backend in WordPress ist alles (Theme, WordPress, PlugIns) auf dem aktuelle Stand:

WordPress selbst schreibt dies dazu:

Der Strato-Support hat mir ncoh diese veralteten Link geschickt wodurch ich nicht schlauer geworden bin:
https://www.strato.de/blog/wordpress-auf-aktuelle-php-version-umstellen/

https://www.strato.de/faq/hosting/so-stellen-sie-ihre-php-version-manuell-um/

Kennt jemand das Problem und hat ggf. eine Lösung dazu?

Vielen Dank schonmal!

Bild zum Beitrag
Computer, HTML, programmieren, WordPress, PHP, Strato

PHP XLSX Writer überspringt erste Zeile - was tun?

Hey!

Ich habe gestern die Erweiterung PHP XLSX Writer gefunden und meinem System hinzugefügt. Ziel: Datenbank mit PHP (und mysqli) in ein Excel Dokument umwandeln. Irgendwie überspringt er die erste Zeile und spuckt mir im Dokument erst alles ab id=2 aus... Wisst ihr woran das liegt?

Danke schonmal für eure Antworten!

Hier noch der Quellcode von meiner export.php:

<?php
include "config.php";
include_once("../includes/excel/xlsxwriter.class.php");
//ini_set('display_errors', 0);
//ini_set('log_errors', 1);
//error_reporting(E_ALL & ~E_NOTICE);


    date_default_timezone_set('Europe/Berlin');
    $filename = "PZUS_" . date('Y-m-d') . ".xlsx";


    header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
    header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    header('Content-Transfer-Encoding: binary');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');   
    $sql="SELECT * FROM tbl_contact";
    $result = $link->query($sql); 
    $row = $result->fetch_assoc(); 
    $header = array(
      'ID'=>'string',
      'Nachname'=>'string',
      'Vorname'=>'string',
      'Klasse'=>'string',
      'Bemerkung'=>'string',
      'Datum'=>'string',
      'Email'=>'string',
      'Adresse'=>'string',
      'Tel'=>'string',
    );
    $writer = new XLSXWriter();
    $writer->writeSheetHeader('PZUS-1', $header);
    $array = array();
    while ($row=$result->fetch_assoc())
    {
        $array[1] = $row['id'];
        $array[2] = $row['fldSurname'];
        $array[3] = $row['fldFirstname'];
        $array[4] = $row['fldClass'];
        //$array[4] = $row['fldCourse'];
        $array[5] = $row['fldDmg'];
        $array[6] = $row['fldDate'];
        $array[7] = $row['fldEmail'];
        $array[8] = $row['fldAdress'];
        $array[9] = $row['fldTel'];
        $writer->writeSheetRow('PZUS-1', $array);
    };


    //$writer->writeSheet($array,'Sheet1', $header);//or write the whole sheet in 1 call    


    $writer->writeToStdOut();
    //$writer->writeToFile('example.xlsx');
    //echo $writer->writeToString();
    exit(0);
Computer, Microsoft Excel, HTML, programmieren, Export, MySQL, PHP

PHP User verifizieren?

Hi, ich bin grad dabei ne Website für ein kleines Startup zu programmieren und hänge grad am Login System. Ich hab dabei kein wirkliches Problem sondern eher ne allgemeine Frage:

Wie kann man sicher und sinnvoll einen User verifizieren

Momentan mache ich das so:
Ein User registriert sich, woraufhin in der Datenbank für diesen User ein einzigartiger "Verifizierungscode" generiert wird. Dieser wird dann, wenn er sich einloggt, auf dem PC des Users per Cookie gespeichert. Wenn der User jetzt auf sein Dashboard zugreifen will, wird einfach, wenn vorhanden, der Inhalt des Cookies mit allen Verifizierungscodes in der Datenbank abgeglichen und bei der Zeile, in der die Codes übereinstimmen, wird daraus dann der User geladen. Hoffe das ist verständlich, ansonsten einfach nachfragen.

Den Inhalt des Cookies kann man auch nicht durch irgendwelches rumprobieren herausfinden, da ich diesen mit password_hash() gehashed habe.

Mein Problem jetzt: Ich habe mir einige Docs und Sicherheitsberichte durchgelesen in denen häufig gesagt wird, man solle den User nicht nur anhand eines Cookies automatisch einloggen. Nur leider wird nirgends erwähnt, was man sonst noch so machen könnte, da die Gefahr, dass der Cookie geklaut wird oder ähnliches ja schon besteht. (Cookie Hijacking).

Hat jemand ne sinnvolle Antwort auf mein Problem oder andere Lösungsvorschläge?

Computer, Internet, HTML, Webseite, JavaScript, Cookies, Datenbank, MySQL, PHP

PHP - alles in einen großen PHP Befehl packen?

Heya!

Einmal noch ne "kleine" Frage zu PHP.

Ich soll meine Nav so umschreiben, dass es komplett in einem großen PHP "Container" ist und nicht html kommt, php, dann wieder html, wieder php

Habs bisschen mittels echo probiert aber anscheinend ist das nicht komplett zielführend wie ich das dachte

Der Code:

<ul class="nav">
    <li><a class="navtext <?php echo ($page == 'home.php') ? "active":"" ?>"
            href="index.php?page=home&amp;lang=<?php echo $langKey; ?>">
        <?php echo $lang['MENU_HOME']; ?>        
    </a></li>
    
    <li><a class="navtext <?php echo ($page == 'ueberuns.php') ? "active":"" ?>"
              href="index.php?page=ueberuns&amp;lang=<?php echo $langKey; ?>">
        <?php echo $lang['MENU_ABOUT_US']; ?>
    </a></li>
    
    <li><a class="navtext <?php echo ($page == 'karriere.php') ? "active":"" ?>"
           href="index.php?page=karriere&amp;lang=<?php echo $langKey; ?>">
        <?php echo $lang['MENU_CARRER']; ?>    
    </a></li>
    
    <li><a class="navtext <?php echo ($page == 'blog.php') ? "active":"" ?>"
           href="index.php?page=blog&amp;lang=<?php echo $langKey; ?>">
        <?php echo $lang['MENU_BLOG']; ?>        
    </a></li>
    
    <li><a class="navtext <?php echo ($page == 'kontakt.php') ? "active":"" ?>"
           href="index.php?page=kontakt&amp;lang=<?php echo $langKey; ?>">
        <?php echo $lang['MENU_CONTACT']; ?>    
    </a></li>
    
    <li><a class="navtext <?php echo ($page == 'team.php') ? "active":"" ?>"
           href="index.php?page=team&amp;lang=<?php echo $langKey; ?>">
        <?php echo $lang['MENU_TEAM']; ?>        
        </a></li>
</ul>
HTML, PHP

Meistgelesene Beiträge zum Thema PHP