Ankündigung

Einklappen
Keine Ankündigung bisher.

Eine landingpage für alle Partner

Einklappen

Neue Werbung 2019

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

  • Eine landingpage für alle Partner

    Hallo an alle!
    Da ich mich nicht so gut mit php auskenne suche ich hier um Mithilfe.
    Ich bin gerade dabei eine Internetseite für mein Team zu erstellen und dazu gibt es noch eine Landingpage auf die jeder Partner meines teams Leute einladen kann.
    Im Moment habe ich bereits ein Registrierungs- und Loginsystem, die Landingpage und einen Partnerbereich. Was ich suche ist eine Möglichkeit die Links von jedem Partner zur Landingpage mit einer Partnernummer zu versehen, so dass jeder Partner nach dem Einloggen in seinem Partnerbereich nur die Leute zu sehen sind, die er mit seinem Link sich auf die Landingpage eingeladen hat und die dort ihre Daten hinterlassen haben.
    Bzw. Wäre ich auch über Preisabsprachen bereit, wenn jemand bereit wäre das ganze Projekt zu realisieren.
    Falls jemand der nur etwas auf die Sprünge helfen möchte...
    Ich habe eine dynamische Tabelle in mycontact.php erzeugt. Sie holt die Daten aus der Datenbank und der Tabelle guest, in der die eingegebenen Daten der Besucher abgelegt werden.
    Nun muss die Tabelle nur die Leute anzeigen, die von dem Partner auch über seinen persönlichen Link eingeladen wurden.

    PS: Die Partnernummer ist in der functions.php als username angegeben.
    Vielen Dank im Voraus

    mycontact.php
    PHP-Code:

    <?php
    include_once 'includes/db_connect.php';
    include_once 
    'includes/functions.php';
    include_once (
    'header.php');
    sec_session_start();
    ?>




                        Hier kommen die Kontakte: <br>
    <?php

    echo "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%'>
      <tr>
        <td width='20%'>Vorname</td>
        <td width='20%'>Nachname</td>
        <td width='40%'>E-Mail</td>
        <td width='20%'>Telefon</td>
      </tr>
    "
    ;

    ## Auslesen aus DB: Es werden z.B. 4 Werte ausgegeben:
    $sql mysql_query("SELECT * FROM 'guest' WHERE `id`<'1'");
    $anzahl mysql_num_rows($sql);

    echo 
    "$anzahl"

    //und das erzeugt deine tabelle:
    for($i=1;$i=<$anzahl;$i++){
    $go mysql_fetch_array($sql);
    echo 
    "<tr>
        <td width='20%'>
    $go[vorname]</td>
        <td width='20%'>
    $go[nachname]</td>
        <td width='40%'>
    $go[email]</td>
        <td width='20%'>
    $go[telefon]</td>
      </tr>"
    ;
    }


    echo 
    "</table>";  
    ?>
    funktions.php

    PHP-Code:

    <?php
    include_once 'psl-config.php';

    function 
    sec_session_start() {
        
    $session_name 'sec_session_id';   // vergib einen Sessionnamen
        
    $secure SECURE;
        
    // Damit wird verhindert, dass JavaScript auf die session id zugreifen kann.
        
    $httponly true;
        
    // Zwingt die Sessions nur Cookies zu benutzen.
        
    if (ini_set('session.use_only_cookies'1) === FALSE) {
            
    header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
            exit();
        }
        
    // Holt Cookie-Parameter.
        
    $cookieParams session_get_cookie_params();
        
    session_set_cookie_params($cookieParams["lifetime"],
            
    $cookieParams["path"],
            
    $cookieParams["domain"],
            
    $secure,
            
    $httponly);
        
    // Setzt den Session-Name zu oben angegebenem.
        
    session_name($session_name);
        
    session_start();            // Startet die PHP-Sitzung
        
    session_regenerate_id();    // Erneuert die Session, löscht die alte.
    }

    function 
    login($email$password$mysqli) {
        
    // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
        
    if ($stmt $mysqli->prepare("SELECT id, username, vorname, nachname, password, salt
            FROM members
           WHERE email = ?
            LIMIT 1"
    )){
            
    $stmt->bind_param('s'$email);  // Bind "$email" to parameter.
            
    $stmt->execute();    // Führe die vorbereitete Anfrage aus.
            
    $stmt->store_result();

            
    // hole Variablen von result.
            
    $stmt->bind_result($user_id$username$vorname$nachname$db_password$salt);
            
    $stmt->fetch();

            
    // hash das Passwort mit dem eindeutigen salt.
            
    $password hash('sha512'$password $salt);
            if (
    $stmt->num_rows == 1) {
                
    // Wenn es den Benutzer gibt, dann wird überprüft ob das Konto
                // blockiert ist durch zu viele Login-Versuche

                
    if (checkbrute($user_id$mysqli) == true) {
                    
    // Konto ist blockiert
                    // Schicke E-Mail an Benutzer, dass Konto blockiert ist
                    
    return false;
                } else {
                    
    // Überprüfe, ob das Passwort in der Datenbank mit dem vom
                    // Benutzer angegebenen übereinstimmt.
                    
    if ($db_password == $password) {
                        
    // Passwort ist korrekt!
                        // Hole den user-agent string des Benutzers.
                        
    $user_browser $_SERVER['HTTP_USER_AGENT'];
                        
    // XSS-Schutz, denn eventuell wir der Wert gedruckt
                        
    $user_id preg_replace("/[^0-9]+/"""$user_id);
                        
    $_SESSION['user_id'] = $user_id;
                        
    // XSS-Schutz, denn eventuell wir der Wert gedruckt
                        
    $vorname preg_replace("/[^a-zA-Z0-9_\-]+/",
                                                                    
    "",
                                                                    
    $vorname);
                        
    $_SESSION['vorname'] = $vorname;
                        
    $_SESSION['login_string'] = hash('sha512',
                                  
    $password $user_browser);
                        
    // Login erfolgreich.
                        
    return true;
                    } else {
                        
    // Passwort ist nicht korrekt
                        // Der Versuch wird in der Datenbank gespeichert
                        
    $now time();
                        
    $mysqli->query("INSERT INTO login_attempts(user_id, time)
                                        VALUES ('
    $user_id', '$now')");
                        return 
    false;
                    }
                }
            } else {
                
    //Es gibt keinen Benutzer.
                
    return false;
            }
        }
    }

    function 
    checkbrute($user_id$mysqli) {
        
    // Hole den aktuellen Zeitstempel
        
    $now time();

        
    // Alle Login-Versuche der letzten zwei Stunden werden gezählt.
        
    $valid_attempts $now - (60 60);

        if (
    $stmt $mysqli->prepare("SELECT time
                                 FROM login_attempts <code><pre>
                                 WHERE user_id = ?
                                AND time > '
    $valid_attempts'")) {
            
    $stmt->bind_param('i'$user_id);

            
    // Führe die vorbereitet Abfrage aus.
            
    $stmt->execute();
            
    $stmt->store_result();

            
    // Wenn es mehr als 5 fehlgeschlagene Versuche gab
            
    if ($stmt->num_rows 5) {
                return 
    true;
            } else {
                return 
    false;
            }
        }
    }

    function 
    login_check($mysqli) {
        
    // Überprüfe, ob alle Session-Variablen gesetzt sind
        
    if (isset($_SESSION['user_id'],
                            
    $_SESSION['vorname'],
                            
    $_SESSION['login_string'])) {

            
    $user_id $_SESSION['user_id'];
            
    $login_string $_SESSION['login_string'];
            
    $vorname $_SESSION['vorname'];

            
    // Hole den user-agent string des Benutzers.
            
    $user_browser $_SERVER['HTTP_USER_AGENT'];

            if (
    $stmt $mysqli->prepare("SELECT password
                                          FROM members
                                          WHERE id = ? LIMIT 1"
    )) {
                
    // Bind "$user_id" zum Parameter.
                
    $stmt->bind_param('i'$user_id);
                
    $stmt->execute();   // Execute the prepared query.
                
    $stmt->store_result();

                if (
    $stmt->num_rows == 1) {
                    
    // Wenn es den Benutzer gibt, hole die Variablen von result.
                    
    $stmt->bind_result($password);
                    
    $stmt->fetch();
                    
    $login_check hash('sha512'$password $user_browser);

                    if (
    $login_check == $login_string) {
                        
    // Eingeloggt!!!!
                        
    return true;
                    } else {
                        
    // Nicht eingeloggt
                        
    return false;
                    }
                } else {
                    
    // Nicht eingeloggt
                    
    return false;
                }
            } else {
                
    // Nicht eingeloggt
                
    return false;
            }
        } else {
            
    // Nicht eingeloggt
            
    return false;
        }
    }

    function 
    esc_url($url) {

        if (
    '' == $url) {
            return 
    $url;
        }

        
    $url preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i'''$url);

        
    $strip = array('%0d''%0a''%0D''%0A');
        
    $url = (string) $url;

        
    $count 1;
        while (
    $count) {
            
    $url str_replace($strip''$url$count);
        }

        
    $url str_replace(';//''://'$url);

        
    $url htmlentities($url);

        
    $url str_replace('&amp;''&'$url);
        
    $url str_replace("'"'''$url);

        if (
    $url[0] !== '/') {
            
    // Wir wollen nur relative Links von $_SERVER['PHP_SELF']
            
    return '';
        } else {
            return 
    $url;
        }
    }

  • #2
    Falls es sicherheitstechnisch bedenken gibt, so bin ich für jeden Tipp sehr dankbar

    Kommentar


    • #3
      Du musst in deiner guests Tabelle halt schon mitspeichern, von wem der Gast eingeladen wurde, also z.B. als eine Spalte mit der ID des Partners. Das kannst du dann im WHERE mit der Login-ID abfragen.
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        D.h. in der Datenbanktabelle "guest" muss ich die Partnernummer mit einpflegen und diese dann mit der Partnernummer in der Datenbanktabelle "members" vergleichen.
        Verstehe ich das richtig?
        Das Problem ist, dass ich das ganze aus Tutorials und Codeschnippsel zusammen gebaut habe, da ich das noch nicht so gut kann.
        Könntest Du vielleicht mir ein Codebeispiel geben, ich würde ihn dann anpassen. Wenn es Dir nicht so viel Umstände macht!

        Kommentar


        • #5
          Die Loginabfrage mache ich in der header.php

          PHP-Code:

          <?php
          include_once 'includes/db_connect.php';
          include_once 
          'includes/functions.php';
          sec_session_start();
          ?>
          <html lang="en">
            <head>
              <meta charset="utf-8">
              <title>Meine Seite</title>
              <meta name="description" content=""/>
              <meta name="viewport" content="width=1000, initial-scale=1.0, maximum-scale=1.0">

              <!-- Loading Bootstrap -->
              <link href="css/bootstrap.min.css" rel="stylesheet">

              <!-- Loading Flat UI -->
              <link href="css/flat-ui.css" rel="stylesheet">
              <link href="css/demo.css" rel="stylesheet">
              <link href="css/main.css" rel="stylesheet">

              <link rel="shortcut icon" href="img/favicon.ico">

            </head>

            <body>
             <?php if (login_check($mysqli) == true) : 
                          else :
          header('Location: ../login.php'); 
                          endif; 
                  
          ?>
          <nav class="navbar navbar-inverse">
                    <div class="container-fluid">
                      <div class="navbar-header">
                       </div>

                     <a class="navbar-brand"> <?php echo htmlentities($_SESSION['user_id']); ?></a>

                       <ul class="nav navbar-nav">
                         <li><a href="mycontact.php">Meine Kontakte</a></li>
                         <li><a href="#">Nav 2</a></li>
                              <li><a href="#">Nav 3</a></li>
                              <li><a href="#">Nav 4</a></li>
                        </ul>
                       <ul class="nav navbar-nav navbar-right">    

                              <li><a href="logout.php">Abmelden</a></li>    

                           </div>
                              </div>
                              </div>
                              </nav>
                              <div class="container">
                      <center>

                          <br>
                          <center><p>LOGO</p></center>
                          <br>

                          <div class="well" style="margin-bottom:5px;padding-bottom:0px;padding-top:10px">

          Kommentar


          • #6
            Zitat von nopox Beitrag anzeigen
            Das Problem ist, dass ich das ganze aus Tutorials und Codeschnippsel zusammen gebaut habe, da ich das noch nicht so gut kann.
            Könntest Du vielleicht mir ein Codebeispiel geben, ich würde ihn dann anpassen. Wenn es Dir nicht so viel Umstände macht!
            Lerne Grundlagen.

            Grund für die Antwort steht hier.

            Kommentar


            • #7
              Du kannst es ja erstmal mit grundsätzlichem Verständnis für Datenbanken probieren und die entsprechenden Tabellen anlegen, hier gibt es ein passendes Beispiel:

              https://de.wikipedia.org/wiki/Join_(SQL)

              Hier kannst du dein SQL testen und bei konkreten Fragen auch Beispiele posten:

              http://sqlfiddle.com/
              [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

              Kommentar


              • #8
                Hallo!
                ich habe das jetzt soweit geschafft, dass in einer dynamischen Tabelle nur die Gäste ausgegeben werden, die dieselbe memberid haben wie auch der member, der ihn eingeladen hat. Die Herausforderung ist jetzt, dass mir die Tabelle den selben Eintrag immer doppelt anzeigt.
                Vielleicht könnt ihr mir helfen.
                Danke im Voraus

                kontakte.php
                PHP-Code:

                <?php
                include_once 'includes/db_connect.php';
                include_once 
                'includes/functions.php';
                include_once 
                'header.php';
                sec_session_start();
                ?>


                           Hallo


                <table class="table">
                    <tr>
                        <th>Vorname</th>
                        <th>Nachname</th>
                        <th>Telefon</th>
                        <th>Email</th>
                    </tr>
                    <?php

                    $loguser 
                $_SESSION['username'];
                    
                $sql "SELECT guest_vorname, guest_nachname, guest_telefon, guest_email, member_username  FROM guest, members WHERE member_username = '$loguser'";

                    
                $result $mysqli-> query($sql);

                    if (
                $result-> num_rows 0) {
                        while (
                $row $result-> fetch_assoc()) {
                            echo 
                "<tr><td>"$row["guest_vorname"] ."</td><td>"$row["guest_nachname"] ."</td><td>"$row["guest_email"] ."</td><td>"$row["guest_telefon"] ."</td></tr>";
                        }
                        echo 
                "</table>";
                    }
                    else {
                        echo 
                "Es wird Zeit sich an die Arbeit zu machen!";
                    }

                    
                $mysqli-> close();

                    
                ?>

                </table>



                            sdfgsdf                    
                                </div>

                            </div> 

                <?php include('footer.php'); ?>

                Kommentar

                Lädt...
                X