locomputing
Datenbank
Für eine Datenbank wird ein Server benötigt!
Hier für einen XAMPP-Server.
PHP-Ver.: 8.2 - Zend-Ver.: 4.2
Grundwissen über einen XAMPP-Server setze ich voraus!
Fast alle Login Tutorials schreiben nur für username und passwort
Hier mal eins für username, passwort, email, aktivierung und block mit mysqli & PDO / prepared statement.
Geprüft mit php versionen 7.2, 7.4, 8.0, 8.1 und 8.2
Zuerst die Datenbank db_test im XAMPP-Server anlegen!
Verbindung zur XAMPP DatenBank herstellen:
die db_conect.php



<?php
  • // php Fehler und Warnungen anzeigen!
  • error_reporting ( - 1 ) ;
  • ini_set ( ' display_errors ' , true ) ;

  • // Datenbank Fehlermeldungen anzeigen!
  • mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT ) ;

    • // Daten für Datenbankserver
  1. define ( ' DB_SERVER ' , ' localhost ' ) ;
  2. define ( ' DB_USERNAME ' , ' root ' ) ;
  3. define ( ' DB_PASSWORD ' , ' ' ) ;
  4. define ( ' DB_NAME ' , ' db_test ' ) ;

    • // Datenbankserver verbindung
  5. $sqli = new mysqli ( DB_SERVER , DB_USERNAME , DB_PASSWORD , DB_NAME ) ;

    • // Fehlermeldungen anzeigen!
  6. if ( $sqli -> connect_errno )
  7. {
  8. die ( " Datenbank Problem! " . $sqli -> connect_error ) ;
  9. }
?>
<?php
  • // php Fehler und Warnungen anzeigen!
  • error_reporting ( - 1 ) ;
  • ini_set ( ' display_errors ' , true ) ;

    • // Daten für Datenbankserver
  1. define ( ' DB_SERVER ' , ' localhost ' ) ;
  2. define ( ' DB_NAME ' , ' db_test ' ) ;
  3. define ( ' DB_USERNAME ' , ' root ' ) ;
  4. define ( ' DB_PASSWORD ' , ' ' ) ;

    • // Datenbankserver verbindung
  5. try
  6. {
  7. $pdo = new PDO ( " mysql:host = " . DB_SERVER . " ; dbname = " . DB_NAME , DB_USERNAME , DB_PASSWORD ) ;
  8. $pdo -> setAttribute ( PDO : : ATTR_ERRMODE , PDO : : ERRMODE_EXCEPTION ) ;
  9. $pdo -> setAttribute ( PDO : : ATTR_EMULATE_PREPARES , false ) ;
  10. }

    • // Datenbank Fehlermeldungen anzeigen!
  11. catch ( PDOException $fehler )
  12. {
  13. die ( " Datenbank Problem! . " . $fehler -> getMessage ( ) ) ;
  14. }
?>
Datenbank Tabelle für XAMPP-Server erstellen:
die install.php
<?php
  • // Post vorbereiten
  • if ( ! isset ( $_POST [ ' action ' ] ) ) { $_POST [ ' action ' ] = ' ' ; }

    • // Datenbank Tabelle
  1. $sqlquery [ ] = "CREATE TABLE usertable
  2. (
  3. id int ( 11 ) NOT NULL AUTO_INCREMENT ,
  4. username varchar ( 30 ) NOT NULL ,
  5. usermail varchar ( 80 ) NOT NULL ,
  6. userpass varchar ( 255 ) NOT NULL ,
  7. datum datetime NOT NULL ,
  8. code bigint ( 13 ) NOT NULL ,
  9. active int ( 2 ) NOT NULL default '0' ,
  10. block int ( 2 ) NOT NULL default '0' ,
  11. PRIMARY KEY ( id )
  12. ) ;
  13. " ;
?>
    • <!-- Formular -->
  • <! DOCTYPE html>
  • <html lang = " de "> <head>
  • <meta charset = " UTF-8 ">
  • <meta name = " viewport " content = " width = device-width , initial-scale = 1 . 0 ">
  • <title> Installationsscript </title>
  • <meta name = " dcterms.rights " content = " locomputing ">
  • <meta name = " description " content = " Beschreibung der Website ">
  • <meta name = " keywords " content = " Keywords ">
  • <link rel = " stylesheet " href = " https : / / locomputing . de / mustercss / install_style . css ">
  • </head>
  • <body>
<?php
  • // Datenbank verbindung einfügen
  • if ( file_exists ( ' db_conect.php ' ) = = true ) { require ( ' db_conect.php ' ) ; }
?>
  • <form method = "post">
  • <div id = "tbcontainer">
  • <div class = "tbkopf"> Datenbankinstallation </div>
  • <div class = "box">
  • <div> Datenbankname </div>
  • <div> <input class = "put" type = "text" name = "db_name" value = " <?php echo DB_NAME ; ?> "> </div>
  • <div> nur XAMPP </div>
  • </div>
  • <div class = "box">
  • <div> SQL-Host </div>
  • <div> <input class = "put" type = "text" name = "db_server" value = " <?php echo DB_SERVER ; ?> "> </div>
  • <div> nur XAMPP </div>
  • </div>
  • <div class = "box">
  • <div> SQL-Username </div>
  • <div> <input class = "put" type = "text" name = "db_username" value = " <?php echo DB_USERNAME ; ?> "> </div>
  • <div> nur XAMPP </div>
  • </div>
  • <div class = "box">
  • <div> SQL-Passwort </div>
  • <div> <input class = "put" type = "text" name = "db_password" > </div>
  • <div> nur XAMPP </div>
  • </div>
  • <div class = "tbfoot"> Daten für XAMPP-Server sind eintragen. </div>
  • </div>
  • <input class = "but" type = "submit" name = "action" value = " Tabelle_erstellen ">
  • </form>


<?php
    • // Installieren
  1. if ( $_POST [ ' action ' ] = = "Tabelle_erstellen" )
  2. {
  3. $TempBug = 0 ;
  4. $db_name = isset ( $_POST [ ' db_name ' ] ) ? $_POST [ ' db_name ' ] : ' ' ;
  5. $db_username = isset ( $_POST [ ' db_username ' ] ) ? $_POST [ ' db_username ' ] : ' ' ;
  6. $db_password = isset ( $_POST [ ' db_password ' ] ) ? $_POST [ ' db_password ' ] : ' ' ;
  7. $db_server = isset ( $_POST [ ' db_server ' ] ) ? $_POST [ ' db_server ' ] : ' ' ;
  8. $sqli = new mysqli ( $db_server , $db_username , $db_password ) or $TempBug = 1 ;
  9. $sqli -> select_db ( $db_name ) or $TempBug = 2 ;
  10. for ( $i = 0 ; $i < sizeof ( $sqlquery ) ; $i + + )
  11. {
  12. $sqli -> query ( $sqlquery [ $i ] ) or $TempBug = 3 ;
  13. }
  14. $sqli -> close ( ) ;
  15. if ( $TempBug > 0 )
  16. {
?>

<?php
    • // Installieren
  1. if ( $_POST [ ' action ' ] = = "Tabelle_erstellen" )
  2. {
  3. $TempBug = 0 ;
  4. $db_server = isset ( $_POST [ ' db_server ' ] ) ? $_POST [ ' db_server ' ] : ' ' ;
  5. $db_name = isset ( $_POST [ ' db_name ' ] ) ? $_POST [ ' db_name ' ] : ' ' ;
  6. $db_username = isset ( $_POST [ ' db_username ' ] ) ? $_POST [ ' db_username ' ] : ' ' ;
  7. $db_password = isset ( $_POST [ ' db_password ' ] ) ? $_POST [ ' db_password ' ] : ' ' ;
  8. $pdo = new PDO ( " mysql : host = " . $db_server . " ; dbname = " . $db_name , $db_username , $db_password ) or $TempBug = 1 ;
  9. for ( $i = 0 ; $i < sizeof ( $sqlquery ) ; $i + + )
  10. {
  11. $pdo -> query ( $sqlquery [ $i ] ) or $TempBug = 2;
  12. }
  13. if ( ! empty ( $tbl_data ) )
  14. {
  15. for ( $r = 0 ; $r < sizeof ( $tbl_data ) ; $r + + )
  16. {
  17. $pdo -> query ( $tbl_data [ $r ] ) or $TempBug = 3;
  18. }
  19. }
  20. $pdo = null ;
  21. if ( $TempBug > 0 )
  22. {
?>
  • <p class = "noready"> Bei der Installation ist leider ein Fehler aufgetreten...</p>
<?php
  • 17. if ( $TempBug = = 1 )
  • 18. {
  • 19. echo " <p> Keine Verbindung zum Server... </p> " ;
  • 20. }

  • 21. if ( $TempBug = = 2 )
  • 22. {
  • 23. echo " <p> Konnte Datenbank nicht öffnen... </p> " ;
  • 24. }

  • 25. if ( $TempBug = = 3 )
  • 26. {
  • 27. echo " <p> Tabelle konnte nicht angelegt werden... </p> " ;
  • 28. }
  • 29. }
  • 30. else
  • 31. {
?>
  • <p class = "ready"> Die Installation der Tabelle war erfolgreich . </p>
  • <p> Hier geht es zum <a href = " register.php "> Registrieren </a> </p>
<?php
  • 32. }
  • 33. }
?>
  • </body>
  • </html>