Falsche Zeiten PHP?

ich habe hier diesen kleinen code um besucherzahlen von webseiten zu verarbeiten, dabei muss der code den jeweiligen zeitbereich ausrechnen in dem die datenabnkeinträge abgefragt werden, sldo wenn ich den programm diese woche oder gestern usw. gebe sucht es mit alle einträge aus der datenbank raus mit allen unix zeitstempeln die in den zeitabschnitt passen, allerdings sieht es bei mir so aus als ob beim zeitabschnitt diese woche immer die gleichen Werte ausgegeben werden wie bei heute, was stimmt an der berechnung nicht?
mein sql sieht so aus:

 SELECT * FROM $db_table WHERE unix > ? AND unix < ?

wobei die variable $i das erste fragezeichen ausfüllt und $t das zweite

hier ist der php abschnitt der dafür zuständig ist, warum ereechnet es bei heute und diese woche immer den gleichen zeitabschnitt?

if($period == "last_30_minutes"){
  $period = "Last 30 minutes";
  $i = $time - 1800;
} elseif ($period == "today"){
  $str = date("d-m-Y 00:00");
  $i = strtotime($str);
} elseif ($period == "yesterday"){
  $period = "Yesterday";
  $i= intdiv($time, 86400);
  $i = $i - 1;
  $i = $i * 86400;
  $str = date("d-m-Y 00:00");
  $t = strtotime($str);
} elseif ($period == "week") {
  $multiplier = date("w");
  if ($multiplier == 0){
    $multiplier = 7;
  }
  $multiplier = $multiplier - 1;
  $w = date("G") * 3600 + date("i") * 60 + date("s") + $multiplier * 86400;
  $i = $time - $w;
} elseif ($period == "month"){
  $period = "Month";
  $str = "01-" . date("m-Y");
  $i = strtotime($str);
}
Server, Computer, Mathematik, SQL, Webseite, Programmieren, Berechnung, Datenanalyse, Informatik, MySQL, PHP
MySQL Startet nicht?

Hallo, meine MySQL(MariaDB) Datenbank startet nicht mehr und ich weiß nicht wieso.
Da ich nun einen Dump machen möchte muss diese um Aktiven zustand sein, was momentan leider nicht Möglich ist.

Ich habe aus den Syslogs dies

Aug  5 19:39:17 rv2689 systemd[1]: Starting MySQL Community Server...
Aug  5 19:39:17 rv2689 systemd[110214]: mysql.service: Failed to determine group credentials: No such process
Aug  5 19:39:17 rv2689 systemd[110214]: mysql.service: Failed at step GROUP spawning /usr/share/mysql/mysql-systemd-start: No such process
Aug  5 19:39:17 rv2689 systemd[1]: mysql.service: Control process exited, code=exited, status=216/GROUP
Aug  5 19:39:17 rv2689 systemd[1]: mysql.service: Failed with result 'exit-code'.
Aug  5 19:39:17 rv2689 systemd[1]: Failed to start MySQL Community Server.
Aug  5 19:39:17 rv2689 systemd[1]: mysql.service: Scheduled restart job, restart counter is at 5.
Aug  5 19:39:17 rv2689 systemd[1]: Stopped MySQL Community Server.
Aug  5 19:39:17 rv2689 systemd[1]: mysql.service: Start request repeated too quickly.
Aug  5 19:39:17 rv2689 systemd[1]: mysql.service: Failed with result 'exit-code'.
Aug  5 19:39:17 rv2689 systemd[1]: Failed to start MySQL Community Server.

Die MySQL error logs:

root@rv2689:/var/log/mysql# tail -f /var/log/mysql/error.log 
2022-08-05T21:40:38.936047Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.29-0ubuntu0.20.04.3)  (Ubuntu).
2022-08-05T21:40:39.690223Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-08-05T21:40:39.932957Z 0 [ERROR] [MY-011292] [Server] Plugin mysqlx reported: 'Preparation of I/O interfaces failed, X Protocol won't be accessible'
2022-08-05T21:40:39.933028Z 0 [ERROR] [MY-011300] [Server] Plugin mysqlx reported: 'Setup of socket: '/var/run/mysqld/mysqlx.sock' failed, can't create lock file /var/run/mysqld/mysqlx.sock.lock'
2022-08-05T21:40:39.991422Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2022-08-05T21:40:39.991479Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2022-08-05T21:40:39.991761Z 0 [ERROR] [MY-010273] [Server] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.
2022-08-05T21:40:39.991789Z 0 [ERROR] [MY-010268] [Server] Unable to setup unix socket lock file.
2022-08-05T21:40:39.992343Z 0 [ERROR] [MY-010119] [Server] Aborting
2022-08-05T21:40:41.465019Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.29-0ubuntu0.20.04.3)  (Ubuntu).

Vielleicht Sagt mir das nicht, aber vielleicht einen von euch

Ich hoffe mir kann jemand helfen

Wen man anders ein Dump erstellen kann ohne das die MySQL in einen Funktionsfähigen zustand sein muss wäre mir das auch recht da ich die Datenbank umziehen möchte und keine andere Möglichkeit sehe außer ein Dump zu benutzen.

LG

System: Ubuntu 20.04

Computer, Fehler, Linux, Datenbank, MySQL, LOGS, startet-nicht, fail
PHP MySql Login / Passwort überprüfung?

Kann mir da jemand sagen wo der Fehler liegt ? Ich bin da am verzweifeln.

Login, Registrierung, Fehlermeldung, SQL Struktur habe ich alles in die Frage gepackt damit ihr einen besseren überblick habt.

login.php:

<?php
   $server = 'localhost';
   $user = 'root';
   $psw = null;
   $dbName = 'TestApp';
try {
   $conn = new PDO('mysql:host='.$server.';dbname='.$dbName.';charset=utf8', $user, $psw);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    $username = htmlspecialchars(stripslashes(trim($_POST['username'])));
    $password = htmlspecialchars(stripslashes(trim($_POST['password'])));

    $statement = $pdo->prepare("SELECT * FROM user WHERE username = :username");
    $result = $statement->execute(array('username' => $username
                                    ));
    $user = $statement->fetch();
    //Überprüfung des Passworts
    if ($user !== false && password_verify($username, $password['passwort'])) {
        $_SESSION['userid'] = $user['id'];
        die('Login erfolgreich. Weiter zu <a href="geheim.php">internen Bereich</a>');
    } else {
        $errorMessage = "Nutzername oder Passwort war ungültig<br>";
    }

}catch (PDOException $e) {
    print "Error!: " . $e->getMessage() ;
    exit;
  }

Konsole :

<br />
<b>Warning</b>: Undefined variable $pdo in <b>C:\xampp\htdocs\Test\assets\php\login.php</b> on line <b>14</b><br />
<br />
<b>Fatal error</b>: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\Test\assets\php\login.php:14
Stack trace:
#0 {main}
 thrown in <b>C:\xampp\htdocs\Test\assets\php\login.php</b> on line <b>14</b><br />

register.php

<?php
   $server = 'localhost';
   $user = 'root';
   $psw = null;
   $dbName = 'TestApp';
try {
   $conn = new PDO('mysql:host='.$server.';dbname='.$dbName.';charset=utf8', $user, $psw);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

// POST wird mit AJAX gesendet
   $username = htmlspecialchars(stripslashes((trim($_POST["username"])))) ;
   $password =  password_hash(htmlspecialchars(stripslashes((trim($_POST["password"])))) ,PASSWORD_DEFAULT) ;
   $cash =     100;

// Schreibt in die Datenbank

   $sql = "INSERT INTO user (username,password,cash) VALUES (:username,:password,:cash) ";
   $sqlvars = array("username"  => $username,
   "password" => $password,
   "cash" => $cash);
   $Abfrage = $conn->prepare($sql);
   $Abfrage->execute($sqlvars);


}catch (PDOException $e) {
  print "Error!: " . $e->getMessage() . "<br/>";
  exit;
}

SQL STRUKTUR :

Datenbankname : Test

Tabelle : user , 5 Spalten/Rows

  • id | int , (auto increment)
  • username | varchar , (unique)
  • password | varchar, (gehasht mit salt sha512)
  • cash | varchar
  • time | datetime, (mit current time stamp)

und ich mache alles mit AJAX.

-PDO statt mysqli

Computer, Website, Programmierer, Programmieren, JavaScript, Datenbank, Informatik, MySQL, PHP, Webdevelopment, Backend, phpMyAdmin, PDO
Mehrere Webseiten über ein Login System organisieren?

Ich hab mehrere Webseiten die teils über verschiedene Server verstreut sind und es wäre ziemlich lästig für jede ein eigenes zu machen also hab ich beschlossen sowas ähnliches wie oAuth nur mit PHP zu bauen, am besten so zweckmäßig wie möglich um das ganze zu erleichtern. Kann man das Konzept als fertig bezeichnen oder muss man da noch was dran ändern?

Dass man sich anmelden kann wird man auf die anmeldeseite geleitet, man gibt seine Daten ein und man wird auf die eigentliche Seite zurückgeleitet

um einen Benutzer anzumelden greift der dienst als erstes auf einen langen string zurück nennen wir es mal API Token. dieser wird während der nutzer auf die anmeldeseite geleitet wird mit post übergeben um zum einen sicherzustellen dass die webseite autorisiert dazu ist daten anzufragen und zum anderen dass das login system weiß wohin es den token und den Nutzer nach der anmeldung leiten soll. Dann meldet sich der nutzer auf der loginseite n und der nutzername und das passwort wird validiert etc. danach stellt der authentifizierungsserver das access Token aus, was beim weiterleiten wieder zurückgepostet wird. Dieses access token wird dann beim nutzer als cookie gespeichert und der Dienst der dann die Zeichenkette erhalten hat fragt dann die benötigten daten(nutzername, geburtsdatum etc.) mit curl von autentifizierungsserver ab und somit ist der nutzer angemeldet.

Das heißt ich müsste das script was prüft welchen Benutzername man hat muss mit jedem einzelnen Seitenaufruf erneut mittels dem access token den nutzernamen anfragen, eventell kann man das aber auch über nen session cookie mit nutzername regeln

Also: kann man das umsetzen oder habe ich was vergessen?

Computer, Webseite, Programmieren, JavaScript, Datenbank, MySQL, PHP, Webserver
Mysql Auslesen JAVA? Schaut euch mal den code an, und sagst mir bitte was ich falsch gemacht haben, und wieso ich nicht den user "Hannes" ausgegeben bekomme?
    private void readDBData(int i) {

        try {
            String url = "jdbc:mysql://" + host + "/" + dbName;
            connection = DriverManager.getConnection(url, user, pass);
            statement = connection.createStatement(); // Verbindung aufbauen

            //String sqlQuery = "SELECT * FROM " + dbTable;
            //String sqlQuery = "SELECT localhost:3306, root, root FROM user WHERE user = 'Username'";
            String sqlQuery = "SELECT * FROM user WHERE '" + loginname + "'";
            resultSet = statement.executeQuery(sqlQuery);
            int spalten = resultSet.getMetaData().getColumnCount();
            System.out.println("Anzahl der User in Spalten: " + spalten);
            while (resultSet.next()) {
                String[] str = new String[8];
                for (int k = 1; k <=spalten; k++) {
                    str[k - 1] = resultSet.getString(k);
                }
                result.add(str);
            }

            statement.close();
            connection.close();
        } catch (SQLException e) {
            System.out.println("Fehler bei Tabellenabfrage: " + e);
            return;
        }
    }

    private void printDBData(ArrayList<String[]> list) {
        String[] str = new String[0];
        for (Iterator<String[]> iter = list.iterator(); iter.hasNext(); ) {
            str = (String[]) iter.next();

            for (int i = 0; i < str.length; i++) {
                System.out.print(str[i] + "\t"); // Ausgabe in Console
                //JFrame usd = new JFrame();
                //JOptionPane.showMessageDialog(usd, "Datenbank ausgabe : " + str[i] + "\t" + ".....");
                if (str[i] == "Hannes"){
                    System.out.println(" User Vorhanden ");
                }else {
                    System.out.println(" User nicht Vorhanden ");
                }
            }
            System.out.print(System.getProperty("line.separator"));

        }
    }

}
Java, MySQL
Überprüfen wie viele Zeilen eine Tabelle in einer Datenbank hat?

Ich probiere nun bereits länger herum und versuche eine überprüfung ob im der Daatenbank im der Tabele "Story" irgendwelche inhalte gespeichert sind. Das habe ich bereits mit SELECT COUNT(*) FROM Story; versucht, hat aber aus irgendeinem grund immer nur Fehler gegeben. Ich habe dann weiter gesucht und das folgende gefunden, aber auch da wird mir "mysql_query" und "mysql_num_row" in Zeile 10 und 11 als fehlerhaft unterstrichen, auf der Website wird das darauffolgende IF auch nicht ausgeführt. Das was ihr seht ist der gesamte Code welcher ich auf dem Dokument habe....

<?php

//Datenbank öffnen: XXXX

$db = mysqli_connect('localhost', 'XXXX', 'XXXXX', 'XXXXX') or die('Fehler bei der Verbindung zum MySQL-Server.');

$sql_query = mysqli_query($db, "SELECT * FROM Story");

mysqli_set_charset($db, "utf8");

$sql = "SELECT * FROM Story WHERE name='Inhalt'"; 

$result = mysql_query($sql); 

$zahl = mysql_num_row($result); // zählt die zeilen 

 

if ($zahl < 1) { 

  echo "nicht vorhanden"; 

} else {

  echo "ERROR";

}

Das ab hier Folgende betrifft ansich nicht mehr meine Fragestellung und ist noch unfertig (Wollte aber mal das ganze Dokument hier rein stellen um sicher zu gehen):

$pdo = new PDO('mysql:host=localhost;dbname=XXXX', 'XXXXX', 'XXXXX');

if ($count == 0 or $count == NULL) {

?>

  <script type="text/javascript" language="JavaScript">

    alert('Hinweis: Hier gibt es leider noch nichts zu sehen!');

    window.location.replace('https://www.XXXX.de');

  </script>

<?php

} else {

  $sql = "SELECT * FROM Story";

  foreach ($pdo->query($sql) as $row) {

    $string = utf8_encode($row['Inhalt']);

    echo $string . "<br />";

  }

}

?>

Computer, Programmieren, MySQL, PHP, Tabelle
Datentabellen Synchronisieren/Replikation in jeder Ebene?

Hellou,

ich glaube, ich bin mit einem Excelprojekt an gewisse Grenzen der Sinnhaftigkeit gestoßen und benötige alternativen :D
Es geht um die Zusammenführung von mehreren Datentabellen, die aber in jeder Ebene Änderungen an den Werten zulassen und sich sozusagen "synchronisieren".

Ich versuche mal, dass Schema dazustellen:

Es gibt aktuell um die 10 Datentabellen, eine pro Außendienstler.
Diese füllen sich durch quasi Formulare.
Also ich hab eine Excel pro AD mit bis zu 25 Tabs (25 Formularen (eins Pro Projekt) und diese werden im ersten Tab als Datentabelle gespeichert.

Und dann hab ich eine MasterDatentabelle, die alle 10 Datentabellen der ADs in eine Master zusammenfügt. (Das hab ich über PowerQuery mal gelöst)

Sozusagen:

Mehrere Formulare = Ein Datensatz
10mal ein Datensatz = Master

Das Problem, dass aktuell besteht ist nun, das Änderungen an Werten ausschließlich im Formular gemacht werden können.
Bei Projektbesprechungen, in den man aber mit der Mastertabelle arbeitet, hat niemand Lust, alle 10 Excels der ADs zu öffnen und dann im Entsprechenden Formular die Änderung vorzunehmen.

Der Big Dream wäre jetzt, das es egal ist, in welcher Ebene ich mich befinde, ich Änderung vornehmen kann und diese in jede Ebene übernommen werden.

Wenn ich in der Master also im Projekt 187 das Datum für den Toilettengang ändere oder eintrage, dann soll das in der entsprechenden AD-Datentabelle auch geändert werden und auch im Formular.

Die frage ist nur, how?
Ich hab spontan mysql im Kopf, hab damit aber noch nie iwas gemacht und Access.
Kann Access sowas?

Computer, Excel, IT, Daten, Access, MySQL, Database
PHP: echo geht nicht?

Hey,

ich programmiere gerade einen Bezahldienst und ich will zum Testen ein echo ausführen.

Irgendwie wird alles nach der Reihe ausgeführt, aber das echo nicht. Es sieht so aus, als würde er ihn einfach überspringen.

Ich habe den String print mit //Hier markiert:

if (array_key_exists('postdata', $_SESSION)) {
  $stmt = $link->prepare('SELECT balance FROM users WHERE username = ?');
  // In this case we can use the account ID to get the account info.
  $stmt->bind_param('s', $stringArray);
  $stmt->execute();
  $stmt->bind_result($oldBalanceReceiver);
  $stmt->fetch();
  $stmt->close();

  $newBalancePayer = $balance - $_SESSION['postdata']['amount'];
  $newBalanceReceiver = $oldBalanceReceiver + $_SESSION['postdata']['amount'];

  // Changeable
  $fees = 5;
  $newFees = 100 - $fees;

  $reallyNewBalanceReceiver = ($newBalanceReceiver / 100) * $newFees;

  //HIER
  //HIER
  //HIER
  //HIER
  echo "test";
  echo $stringArray;
  //HIER
  //HIER
  //HIER

  $stmt = $link->prepare('UPDATE users SET balance = ? WHERE id = ?');
  $stmt->bind_param("di", $newBalancePayer, $_SESSION['id']);
  $result2 = $stmt->get_result();
  $stmt->execute();

  $stmts = $link->prepare('UPDATE users SET balance = ? WHERE username = ?');
  $stmts->bind_param("ds", $reallyNewBalanceReceiver, $stringArray);
  $result2 = $stmts->get_result();
  $stmts->execute();

Wenn man es von ganz am Anfang anschaut, ging alles am Anfang.

Aber irgendwie heute am nächsten Tag, ging das nicht mehr:

$stmts = $link->prepare('UPDATE users SET balance = ? WHERE username = ?');
$stmts->bind_param("ds", $reallyNewBalanceReceiver, $stringArray);
$result2 = $stmts->get_result();
$stmts->execute();

Deshalb wollte ich $stringarray ausgeben lassen, was mir aber kein Output gibt, genauso nicht wie ein ganz normaler String.

Kann mir jemand helfen?

Ich habe das mit dem echo gelöst. Wie auch immer ich das geschafft habe. $stringarray ist anscheinend in einem anderen if statement und deshalb wird nichts ausgegeben.

Wie soll ich die Variable überall erreichbar machen? Ich kann das

if (array_key_exists('postdata', $_SESSION)) {

Nicht in dem anderen if statement machen, weil dort die Seite neugeladen wird.

Das ist mein anderes if statement:

foreach ($avaibleusernames as $subarray) {
  if (in_array($_POST['username'], $subarray)) {
    echo "he";
    $usernameFound = true;
    echo "test";
    $stringArray = implode("", $subarray);
    echo "test";
    $_SESSION['postdata'] = $_POST;
    unset($_POST);
    header("Location: ".$_SERVER['PHP_SELF']);
    exit;
    break;
  }
}
Computer, Website, HTML, Programmieren, MySQL, PHP
PHP dynamisch mit unterschiedlichen Datenbanken verbinden?

Hallo!

Folgende Situation:

Es gibt mehrere Datenbanken. Eine für alle Installationen meines Projektes (beinhaltet Zugangsdaten für Schul-DB's) und dann weitere, schulspezifische Datenbanken, in denen jeweils andere Dinge stehen (wie zum Beispiel Schüler mit ihren Logindaten, etc.)

Der Benutzer ruft also eine Loginseite auf und gibt eine Schul-ID ein. Nach Buttonklick wird die an ein PHP-Skript übergeben, welche dann aus der Datenbank aller Instanzen die entsprechenden Zugangsdaten für die schulspezifische Datenbank ausliest (anhand der Schul-ID).

Anschließend sollen diese als Variable gesetzt werden, sodass von überall in diesem Skript darauf zugegriffen werden kann. Dabei soll das Ganze allerdings nur für diese Session ersetzt werden und nicht in der Datei. Sodass andere Schüler andere Schul-ID's und damit auch andere Schul-DB's verwenden können.

Wenn der Benutzer dann auf der Loginseite seinen Benutzernamen und sein Passwort eingibt, wird dieses wieder an das PHP-Skript übergeben, welches nun in der schulspezifischen DB nachschaut, ob dort der entsprechende Nutzer existiert.

Folgendes Schema habe ich bis jetzt:

class DB {
  private static $_api_username = "root";
  private static $_api_password = "";
  private static $_api_host = "localhost";
  private static $_api_name = "programmingnow_host";
  private static $_api;

  private static $_db_username = $_SESSION['school_db_user'];
  private static $_db_password = $_SESSION['school_db_pass'];
  private static $_db_host = "localhost";
  private static $_db_name = $_SESSION['school_db_name'];
  private static $_db;

  function __construct() {
    try {
      self::$_api = new PDO("mysql:host=" . self::$_api_host . ";dbname=" . self::$_api_name . ";charset=utf8mb4",  self::$_api_username , self::$_api_password);

      if (isset($_SESSION['school_db_name'])) {
        self::$_db = new PDO("mysql:host=" . self::$_db_host . ";dbname=" . self::$_db_name . ";charset=utf8mb4",  self::$_db_username , self::$_db_password);
      }
    }
    catch(PDOException $e) {
      echo "Datenbankverbindung gescheitert!";
      die();
    }
  }
  
  function connectToSchoolDB($school_id) {
    $stmt = self::$_api->prepare("SELECT instance_db_name, instance_db_user, instance_db_pass FROM instances WHERE instance_key=:instance_key");
    $stmt->bindParam(":instance_key", $school_id);
    $stmt->execute();
    $result = $stmt->fetch();
    $result['instance_db_name'] = $_SESSION['school_db_name'];
    $result['instance_db_user'] = $_SESSION['school_db_user'];
    $result['instance_db_pass'] = $_SESSION['school_db_pass'];
  }

  [..] // Der ganze Rest an Funktionen (wie Login)
} 

Der obige Code funktioniert aber nicht.

Könnt ihr mir da helfen? Wie kann ich das realisieren bzw. wo liegt der Fehler?

Danke schon einmal im Voraus!

VG!

Computer, Website, Technik, HTML, Programmieren, MySQL, PHP, Technologie, Webentwicklung, mysql-datenbank
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, Website, Programmieren, MySQL, PHP, Website programmieren
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, Website, Technik, Web, Programmieren, Passwort, Hash, Informatik, IT-Sicherheit, Kryptografie, Kryptographie, MySQL, PHP, Programmiersprache, Technologie, web-development, Web Developer
Wie vererbt man PHP Bedingungen beim paginieren einer Tabelle an die folgenden Seiten?

Hallo,

eigentlich habe ich 2 Fragen zu PHP, aber das hätte nicht alles ich die Überschrift gepasst.

Frage 1

Ich erlerne gerade PHP und MySQL. Dafür habe ich in einer Datenbank eine Tabelle über Internet Radiostationen angelegt, mit Sendername, Land, Kontinent, StreamURL, Genre usw. Über ein Auswahlmenü lässt sich die Tabelle nach Sendernamen, Land oder Kontinent sortieren. Das klappt soweit auch. Damit aber nicht mehr als 20 Radiostationen auf einer Seite erscheinen, habe ich unter Zuhilfenahme eines Buches die Seiten paginiert (Steige da aber noch nicht so richtig durch). Wenn ich nun die Radiostationen nach Land oder Kontinent sortiere, dann klappt das zwar auf der ersten Seite aber auf der zweiten Seite ist wieder alles nach den Sendernamen sortiert.

Was muss ich machen, damit die Sortier – Auswahl auch an die folgenden Seiten übergeben wird?

Hier ist der PHP Code

<?php

$sortieren = $_POST['sortieren'];

if($sortieren == "Sendername") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY sendername LIMIT $start, $anzahl_pro_seite");

} elseif($sortieren == "Kontinent") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY kontinent LIMIT $start, $anzahl_pro_seite");

} elseif($sortieren == "Land") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY land LIMIT $start, $anzahl_pro_seite");

}

?>

Frage 2

Wie muss die Fall – Entscheidung formuliert werden?

Natürlich soll man Radiosender über ein Eingabeformular finden können. Auch das funktioniert. Allerdings möchte ich, wenn es keinen Sender mit dem entsprechenden Namen gibt, das ein Text wie z. B. "Leider kein Sender mit diesem Namen zu finden" erscheint. Dafür habe ich in der Fall – Entscheidung folgende 2 Dinge ausprobiert:

if($zeile == !array()) {

echo "Leider gab es keinen Sender mit dem Namen";

}

Das klappt nicht.

if($zeile == false) {

echo "Leider gab es keinen Sender mit dem Namen";

}

Das klappt auch nicht.

if($zeile == null) {

echo "Leider gab es keinen Sender mit dem Namen";

}

War auch 'ne Nullnummer :)

Hier ist der komplette Code dazu:

<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<label>Sendername eingeben:</label><br />

<input type="text" name="suchbegriff"/><br /><br />

<input type="submit" name="gesendet"/>

</form>

<?php

if(isset($_POST['gesendet'])) {

$suchbegriff = htmlspecialchars($_POST['suchbegriff']);

echo $suchbegriff . "<br />";

$db = mysqli_connect("localhost", "root");

mysqli_set_charset($db, "utf8");

mysqli_select_db($db, "radio2");

$sql = "SELECT * FROM sender WHERE sendername LIKE '%$suchbegriff%' ";

$erg = mysqli_query($db, $sql);

while($zeile = mysqli_fetch_assoc($erg)) {

echo $zeile['sendername'] . " ". $zeile['kontinent'] ." ". $zeile['land'] . " ". $zeile['ort'] . " ". $zeile['genre'] . " ". $zeile['streamurl'] . "<br /><br />" ;

}

if($zeile == !array()) {

echo "Leider gab es keinen Sender mit dem Namen";

}

}

?>

</body>

Danke für's lesen.

Computer, Programmieren, MySQL, PHP
JavaScript Problem?

Hab mir einen Passwort Generator gemacht (Code unten), aber irgendwas stimmt da manchmal nicht und ich komm nicht drauf.

Ist noch nicht fertig oder überhaupt ein Krasser Passwort Generator aber hab den aus Langeweile gemacht und dieser Fehler stört mich.

Kann mir jemand weiterhelfen ?

Hier steht kein Undefined.

Hier steht ein Undefined mitten im erstellten Passwort.

Ist nur kurzer JavaScript Code:


let pwLength = 12;
let randomNumber  = Math.round(Math.random() *3);
let ALPHABET = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',  'S', 'T', 'U', 'V', 'W', 'X','Y', 'Z' ];
let alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
let Numbers = ["0","1","2","3","4","5","6","7","8","9"];
let SpecialChar = 
            ["!", "*", "#" ,"," ,";" ,"?", "+", "-", "_" ,".", "=", "~", "^", "%", "(", ")" ,"{", "}", "[", "]", "|", ":", "/" ];
let passwort = "";


    for (i = 0; i <= pwLength - 1; i++){
    /* zufällige Zahl zwischen 0-3,
    Bei jedem Schleifendurchgang geht es in ein anderes if statement rein */
    randomNumber  = Math.round(Math.random() *3);


                    // +1 Großbuchstabe
                if (randomNumber == 0){
                passwort += ALPHABET[Math.round(Math.random() *ALPHABET.length)]; }
                  // +1 Kleinbuchstabe
                if (randomNumber == 1){
                passwort += alphabet[Math.round(Math.random() *alphabet.length)];}
                  // +1 Zahl
                if (randomNumber == 2){
                   passwort += Numbers[Math.round(Math.random() *Numbers.length)];}
                    // +1 Sonderzeichen
                if (randomNumber == 3){
                passwort += SpecialChar[Math.round(Math.random() *SpecialChar.length)];}
    }
                if (passwort.includes("undefined")){
                console.log("Undefined Fehler, Passwort lautet " + passwort);}
                else{ console.log("Dein Passwort lautet : " +passwort )}

Glaube mit Switch Case wäre das besser als if, hab ich aber nie benutzt nur in Tutorials mal gesehen

JavaScript Problem?
Computer, HTML, Programmieren, CSS, JavaScript, Fachinformatiker, Informatik, JQuery, MySQL, web.de, Angular
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, Website, HTML, Webseite, Programmieren, MySQL, PHP

Meistgelesene Fragen zum Thema MySQL