Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Kundenportal --> überprüfen ob Table existiert

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Kundenportal --> überprüfen ob Table existiert

    Hallo liebe Community,

    ich hoffe ihr könnt mir bei meinem Problem helfen.
    Ich habe vor ein kleines Kundenportal zu schreiben, der Login funktioniert, das Portal dahinter an sich bisher auch. Jetzt will ich, bevor man sich einloggen kann, ein Case schreiben, der überprüft, ob die Tabelle customer in der DB vorhanden ist und falls nicht, diese dann erstellt wird. Bisher bin ich allerdings gescheitert. Die SuFu des Forums sowie Onkel Google konnten mir nicht ausreichend helfen. Und jetzt nach 3 Tagen habe ich mir gedacht, ich versuche es doch mal hier.

    Hier der Code:

    PHP-Code:
    <?php
    require_once('admin.php');

    $title __('Backoffice');
    $parent_file 'office.php';

    include(
    'admin-header.php');
    include_once 
    'customer/includes/customer_functions.php';
    get_currentuserinfo();
    include(
    "inc/mysql.inc.php");
    ?>


    <div class="wrap">

        <?php
            $customer 
    0;
            if(isset(
    $_GET['customer'])) $customer $_GET['customer'];
            switch(
    $customer) {
            case 
    login:
        
    ?> 
        
            <div id="login">
                    
                    <?php
                        
    if (login_check($mysqli) == true) {
                            
    $logged 'eingeloggt';
                        } else {
                            
    $logged 'ausgeloggt';
                        }
                    
    ?>
                        
                            
                <div id="login_div">
                                  
                                
                            <?php
                                
    if (isset($_GET['error'])) {
                                    echo 
    '<p class="error">Login fehlgeschlagen!</p>';
                                }
                            
    ?> 
                    <form action="kunden.php?customer=db_prog" method="post" name="login_form" class="login_form">                      
                            Email: <input type="text" name="email" /><br/>
                            Password: <input type="password" 
                                             name="password" 
                                             id="password"/><br/>
                                      <input type="button" 
                                             value="Login" 
                                             onclick="formhash(this.form, this.form.password);" /> 
                    </form>
                                <!--        <p>Noch nicht registriert?  <a href="kunden.php?customer=register">Registrieren!</a></p> -->
                                           <p>Sie sind im Moment <?php echo $logged ?>.</p>
                </div>
                                
            </div>    
        
        <?php
            
    break;
            
            case 
    1:        
            
                        if (isset(
    $_POST['email'], $_POST['p'])) {
                            
    $email $_POST['email'];
                            
    $password $_POST["p"]; // Das gehashte Passwort.
                 
                        
    if (login($email$password$mysqli) == true) {
                            
    // Login erfolgreich
                            
    if (login_check($mysqli) == true) : 
                            
                            
                            include(
    'customer/includes/portal.php');
                            
                            
    ?>
                            
                
                            <?php else : ?>
                            <p>
                                <span class="error">Sie sind nicht dazu berechtigt diese Seite einzusehen.</span> Bitte <a href="kunden.php?customer=login">loggen</a> Sie sich ein.
                            </p>
                        <?php    endif;
                        } else {
                            
    // Login fehlgeschlagen 
                            
    ?>
                            <p>Login fehlgeschlagen! Bitte versuchen Sie es erneut. Höchstwahrscheinlich haben Sie entweder die EMail-Adresse oder das Passwort fehlerhaft eingegeben.</p></br>
                            <p>Bitte versuchen Sie es <a href="kunden.php?customer=login">erneut!</a></p>
                        <?php    
                        
    }
                        } else {
                        
    // Die korrekten POST-Variablen wurden nicht zu dieser Seite geschickt. 
                            
    echo 'Invalid Request';
                        }    
            break;
        
            case 
    logout:
                
                
    // Setze alle Session-Wert zurück
                
    $_SESSION = array();

                
    // hole Session-Parameter
                
    $params session_get_cookie_params();

                
    // Lösche das aktuelle Cookie.
                
    setcookie(session_name(),
                        
    ''time() - 42000,
                        
    $params["path"],
                        
    $params["domain"],
                        
    $params["secure"],
                        
    $params["httponly"]);

            
                
    // Vernichte die Session
                
    session_destroy();
                echo 
    "Session Destroyed!";    
                
            break;
            
            case 
    register:
    ?>
            
            
            <h1>Registrierung</h1>
            <?php
            
    if (!empty($error_msg)) {
                echo 
    $error_msg;
            }
            
    ?>
            <ul>
                <li>Benutzernamen dürfen nur Ziffern, Groß- und Kleinbuchstaben und Unterstriche enthalten.</li>
                <li>E-Mail-Adressen müssen ein gültiges Format haben.</li>
                <li>Passwörter müssen mindest sechs Zeichen lang sein.</li>
                <li>Passwörter müssen enthalten
                    <ul>
                        <li>mindestens einen Großbuchstaben (A..Z)</li>
                        <li>mindestens einen Kleinbuchstabenr (a..z)</li>
                        <li>mindestens eine Ziffer (0..9)</li>
                    </ul>
                </li>
                <li>Das Passwort und die Bestätigung müssen exakt übereinstimmen.</li>
            </ul>
            <form action="<?php echo esc_url($_SERVER['PHP_SELF']); ?>
                    method="post" 
                    name="registration_form">
                Benutzername: <input type='text' 
                    name='username' 
                    id='username' /><br>
                Email: <input type="text" name="email" id="email" /><br>
                Passwort: <input type="password"
                                 name="password" 
                                 id="password"/><br>
                Passwort bestätigen: <input type="password" 
                                         name="confirmpwd" 
                                         id="confirmpwd" /><br>
                <input type="button" 
                       value="Register" 
                       onclick="return regformhash(this.form,
                                       this.form.username,
                                       this.form.email,
                                       this.form.password,
                                       this.form.confirmpwd);" /> 
            </form>
            <p>Return to the <a href="kunden.php?customer=login">login page</a>.</p>
    <?php 
        
    break;
        }
    ?>
                        
        
        
        
                     
            
        
    </div>
    <?php include("admin-footer.php"?>


  • #2
    PHP-Code:
    CREATE TABLE IF NOT EXISTS `deineTabelle` (...); 
    erstellt die Tabelle "deineTabelle" falls sie noch nicht existiert (statt der "..." natürlich dann die Tabellendefinition).

    Kommentar


    • #3
      Schau dir mal von MySql "IF NOT EXIST" an das sollte dir helfen
      - Laravel

      Kommentar


      • #4
        Zitat von WTB Beitrag anzeigen
        PHP-Code:
        CREATE TABLE IF NOT EXISTS `deineTabelle` (...); 
        erstellt die Tabelle "deineTabelle" falls sie noch nicht existiert (statt der "..." natürlich dann die Tabellendefinition).
        Also so?-->
        PHP-Code:
        |...|

        case 
        db_prog:

        CREATE TABLE IF NOT EXISTS `customer` (
        id BIGINT12 NOT NULL ,
        firm VARCHAR32 NOT NULL ,
        salutation VARCHAR (12NOT NULL,
        surname VARCHAR32 NOT NULL ,
        name VARCHAR32 NOT NULL ,
        adress VARCHAR64 NOT NULL ,
        plz INT NOT NULL,
        city VARCHAR 32 NOT NULL,
        country VARCHAR 32 NOT NULL,
        phone_1 VARCHAR 16 NOT NULL,
        phone_2 VARCHAR 16 NOT NULL,
        phone_3 VARCHAR 16 NOT NULL,
        phone_4 VARCHAR 16 NOT NULL,
        email VARCHAR 100 NOT NULL,
        category INTNOT NULL ,
        customer_since DATE NOT NULL ,
        comment LONGTEXT 150 NOT NULL,
        PRIMARY KEY (id)
        ); 

        break;

        |...| 

        Kommentar


        • #5
          Ja so in etwa nur das was du da geschrieben hast niemals funktionsfähig ist.
          - Laravel

          Kommentar


          • #6
            Zitat von tera3yte Beitrag anzeigen
            Ja so in etwa nur das was du da geschrieben hast niemals funktionsfähig ist.
            Das ist mir bisher auch aufgefallen . Nur was mache ich da am besten um es funktionsfähig zu machen? :O

            Kommentar


            • #7
              Schau dir mysqli_ (das i ist entscheident) oder PDO an. Damit kann du dann deine Query die du oben gepostet hast ausführen. Natürlich nur wenn du auch einen MySql-Datenbank, bzw bei PDO auch andere Datenbankserver zur Verfügung hast.
              - Laravel

              Kommentar


              • #8
                Kannst du mir bitte, anhand des vorhandenen Codes ein kleines Beispiel geben?

                Gesendet von meinem D6503

                Kommentar


                • #9
                  PHP-Code:

                  $pdo 
                  = new PDO($driver$user$pass);

                  $stmt $pdo->query("CREATE TABLE IF NOT EXISTS `customer` ...");
                  $stmt->execute();

                  // oder:

                  $stmt mysqli_query($link"CREATE TABLE IF NOT EXISTS `customer` ...");

                  // $link enthält die mysqli_-Verbindungsinformationen aus mysqli_connect() 
                  EDIT:

                  Für genaueres und weiteres schau dir mal diesen Link an:

                  http://www.peterkropff.de/site/php/m...grundlagen.htm
                  - Laravel

                  Kommentar


                  • #10
                    Zitat von wripper Beitrag anzeigen
                    Also so?-->
                    Ich weiß grad gar nicht, was kranker ist: zur Laufzeit Tabellen erstellen oder INT als PLZ.
                    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                    Kommentar


                    • #11
                      Zitat von akretschmer Beitrag anzeigen
                      Ich weiß grad gar nicht, was kranker ist: zur Laufzeit Tabellen erstellen oder INT als PLZ.
                      Nun INT als PLZ ist ja nicht ganz verkehrt

                      EDIT:

                      Im nachhinein wohl doch. Schließlich speichert er auch verschiedene Länder^^

                      Dann als Tipp an den Autor:

                      PLZ in der Regel immer als string/ varchar speichern
                      - Laravel

                      Kommentar


                      • #12
                        Zitat von tera3yte Beitrag anzeigen
                        Nun INT als PLZ ist ja nicht ganz verkehrt
                        Genau. Es ist vollkommen verkehrt.
                        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                        Kommentar


                        • #13
                          Zitat von tera3yte Beitrag anzeigen
                          PHP-Code:

                          $pdo 
                          = new PDO($driver$user$pass);

                          $stmt $pdo->query("CREATE TABLE IF NOT EXISTS `customer` ...");
                          $stmt->execute();

                          // oder:

                          $stmt mysqli_query($link"CREATE TABLE IF NOT EXISTS `customer` ...");

                          // $link enthält die mysqli_-Verbindungsinformationen aus mysqli_connect() 
                          EDIT:

                          Für genaueres und weiteres schau dir mal diesen Link an:

                          http://www.peterkropff.de/site/php/m...grundlagen.htm
                          Danke dir für die Erklärung. Werde mich da mal reinarbeiten. Ist aber so wie es aussieht nicht allzu schwer
                          Zitat von akretschmer Beitrag anzeigen
                          Genau. Es ist vollkommen verkehrt.
                          Inwiefern? Oo kannst du das bitte genau erläutern?

                          Kommentar


                          • #14
                            Zitat von wripper Beitrag anzeigen
                            Danke dir für die Erklärung. Werde mich da mal reinarbeiten. Ist aber so wie es aussieht nicht allzu schwer

                            Inwiefern? Oo kannst du das bitte genau erläutern?
                            Speichere bitte die PLZ von Dresden als INT und gib sie vollständig wieder aus.

                            Bonusfragen:
                            - wie speicherst Du die 5. Telefonnummer?
                            - wie speicherst Du die zweite eMail-Adresse?
                            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                            Kommentar


                            • #15
                              In dieser Tabelle werden niederländsche Postleitzahlen definitiv nicht berühmt. @Kretschma: Naja, mit Zerofill?
                              Standards - Best Practices - AwesomePHP - Guideline für WebApps

                              Kommentar

                              Lädt...
                              X