Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP-MySQL-Freischaltung

Einklappen

Neue Werbung 2019

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

  • #31
    hab mir den quelltext von oben nochmal angesehen und bei md5(mail) isn fehler das muss md5(email) heißen

    noch dazu hab ich ja jetzt 2 $email variablen oder? das war auch beim login das prob das ich 2 mal passwort und username hatte

    außerdem ist mit gerade das
    Code:
      error_reporting(E_ALL);
    aufgefallen das hab ich bisher gar nich im quelltext gehabt

    ansonsten kann ich grad nich überprüfen ob es geht weil grad web.de down ist

    ich meld mich dann wenns geht

    mfg wing

    Kommentar


    • #32
      Notice: Undefined variable: sql in /usr/export/www/vhosts/funnetwork/hosting/wing/userarea/init.php on line 28

      Kommentar


      • #33
        Zu dem Problem mit den zwei Variablen, wenn du den Namen in der mySQL-Datenbank und im normalen Skript gleich gewählt hast, macht das nichts.
        Die Fehlermeldung gibt an, das $sql nicht definiert ist. Vielleicht hast du dich verschrieben.
        mfg RudiS

        Kommentar


        • #34
          Code:
          <?php
            error_reporting(E_ALL);
          
            // Datenbank Variablen 
          		$dbserver = "localhost";	// Datenbankserveradresse (http://w.funpic.de/phpmyadmin/)
          		$dbname = "wing";				// Name der Datenbank
          		$dbuser = "wing";				// Username des Datenbankbenutzers
          		$dbpass = "xx";				// Passwort des Datenbankbenutzers
          
            // Verbindung herstellen:
            $login = @mysql_connect ("$dbserver", "$dbuser", "$dbpass") or die ("Datenbank zur Zeit nicht erreichbar: ".mysql_error());
            @mysql_select_db($dbname,$login) or die ("Datenbank konnte nicht ausgewaehlt werden: ".mysql_error());
          
            // wenn die Variable email vorhanden ist, dann den Account aktivieren:
            if (!empty($_GET['email']))
             {
              // aktiviert den Account:
              $sql = "UPDATE
                        userarea
                      SET
                        active = 1
                      WHERE
                        MD5(email) = '".$_GET['email']."'
                     ";
              $result = mysql_query($sql) OR die (mysql_error());
             }
          
             echo "$sql ";
          
            mysql_close($login);
          
          	// header ("Location:http://wing.funpic.de/userarea/login.php");
           ?>
          ka glaubst du das bringt uns näher an die lösung?

          mfg wing

          EDIT:
          Code:
                         MD5(email) = '".$_GET['email']."'
          muss da bei md5 nich ($email) weil bei der login.php is das so?

          Kommentar


          • #35
            Also ich hab den Quellcode jetzt mal ausprobiert. Bei funktioniert alles bestens. Ich habe mal eine HTML als Basis für den Test genommen:
            Code:
            <a href="test.php?email=0bb72021734e082db179d713fd4ffe61">
            Der Link in einer E-Mail müsste dann so aussehen:
            Code:
            www.domain.de/test.php?email=0bb72021734e082db179d713fd4ffe61
            Hier der Aufbau meiner mySQL-Tabelle, vielleicht hast du dort einen Fehler:
            Code:
            ID int(11)
            email varchar(255)
            active int(1)
            Das email passt da schon, da es der Name der Spalte in der mySQL-Tabelle ist.
            mfg RudiS

            Kommentar


            • #36
              So das ganze funktionier wirklich gut...

              ...nur schaff ich es irgendwie nicht abzufragen, ob active ob 1 oder auf 0 steht.

              Ich weiß... dürfte nicht so schwer sein... aber es will einfach nicht hinhaun.

              Kommentar


              • #37
                Das kannst du so machen:
                Code:
                $sql = "SELECT
                          active
                        FROM
                          userarea
                        WHERE
                          MD5(mail) = '$mail'
                        LIMIT 1;
                       ";
                $result = mysql_query($sql) or die(mysql_error());
                if (mysql_num_rows($result)) // prueft ob ein Ergebnis vorhanden ist
                 {
                  $row = mysql_fetch_assoc($result);
                  echo $row['active'];
                 }
                Damit wird active ausgegeben, du musst gegebenfalls nur WHERE anpassen.
                mfg RudiS

                Kommentar


                • #38
                  Aber für dieses Script muss der der Wert in der Datenbank leer sein oder?

                  Ich hab nämlich automatisch den Wert 0 zugewiesen.

                  So ist s aber sogar besser, denn so kann ich die Spalte gleich für den Rang verwenden...

                  Kommentar


                  • #39
                    Nein da muss nichts leer sein. Das liest einfach den Wert des Feldes active aus und gibt diesen danach wieder aus. Es muss nur ein Eintrag mit der passenden Mail vorhanden sein.
                    mfg RudiS

                    Kommentar


                    • #40
                      OK irgendwas versteh ich nicht am programm...

                      ich dachte:

                      der Link (bzw. das verlinkte Programm) setzt den Wert von active auf 1
                      die eMailadresse wird aber schon in die Datenbank eingetragen, sobald sich der User registriert.

                      Wenn sich dann der User einloggen will wird überprüft, ob der wert 1 ist.



                      Deshalb wolte ich mit
                      Code:
                      if ($active != 1)
                      {
                               echo "Du wurdest noch nicht freigeschalten
                      
                      ";
                      	 echo "Du wirst automatisch zurückgeleitet";
                      	 echo '<script>';
                      	 echo 'window.setTimeout("document.location.href=\'login.php\'",1000);';
                      	echo '</script>';
                      
                      }
                      nur hab ich irgendwie Probleme, den Wert $active mit dem Wert aus der Datenbank zu belegen.

                      dachte in etwa so müsste es gehen:
                      Code:
                      $sql = "SELECT
                      		 active
                      	    FROM
                      		users
                      	    WHERE
                                  Username = '$username'
                      	    LIMIT 1;
                      	     ";
                      $result = mysql_query($sql) or die(mysql_error());
                      $active = mysql_fetch_assoc($result);

                      Kommentar


                      • #41
                        Das passt alles was du dir gedacht hast, aber du kriegst $active so:
                        Code:
                        $sql = "SELECT
                                  active
                                FROM
                                  users
                                WHERE
                                  Username = '$username'
                                LIMIT 1;
                               ";
                        $result = mysql_query($sql) or die(mysql_error()); 
                        $row = mysql_fetch_assoc($result); 
                        $active = $row['active'];
                        Danach prüfst du ob $active eins ist:
                        Code:
                        if ($active == 1)
                         {
                          // einloggen
                         }
                        Man könnte das natürlich auch kompakter lösen:
                        Code:
                        $sql = "SELECT
                                  active
                                FROM
                                  users
                                WHERE
                                  Username = '$username'
                                LIMIT 1;
                               "; 
                        $result = mysql_query($sql) or die(mysql_error()); 
                        $row = mysql_fetch_assoc($result); 
                        if ($row['active'] == 1)
                         {
                          // einloggen
                         }
                        Ich hoffe ich konnte dir weiterhelfen.
                        mfg RudiS

                        Kommentar


                        • #42
                          DANKE

                          jetzt funktioniert es perfekt...
                          ... hab nur ein die; vergessen.

                          zu testen unter http://macbeth.funpic.de/login.php

                          jetzt kommt noch das Feintuning...

                          Kommentar


                          • #43
                            hi sorry das ich so lange weg war

                            hmm das einlogg script hab ich auch schon das funzt aber active is immer 0 (

                            hab email auf varchar aber mit 50 zeichenlänge gemacht aber das ändert ja wohl nichts oder?

                            und das active 1 setzen funzt bei euch?? woran liegt dann das problem?

                            mfg wing

                            Kommentar


                            • #44
                              Du ahst bestimmt einen Schreibfehler in der Zeile, wo du die email losschickst.

                              Zeig einfach mal was du da geschrieben hast...

                              Bei mir siehts so aus
                              Code:
                              $text = "http://macbeth.funpic.de/init.php?email=".md5($email);
                              in der datei init.php steht dann bei mir zu test
                              Code:
                              echo "$sql "
                              und bekomme:
                              UPDATE users SET active = 1 WHERE MD5(UserMail) = 'b3edc2223ac04f7f49745d86ee4d1c04'
                              als ausgabe

                              oder prüf ob du überall auch die selben Variablen benützt hast...

                              Kommentar


                              • #45
                                ich kann ja mal alle meine quelltexte hier posten wenn ihr wollt.... aber bin grad nich zuhause deswegen komm ich jetz nich an die quelltexte ran

                                mfg wing

                                EDIT:

                                also hier die login.php
                                Code:
                                <html>
                                  <head>
                                    <title>login</title>
                                  </head>
                                    <style type="text/css">
                                
                                a:link {color: 000000;}
                                a:visited {color: 000000;}
                                a:active {color: FFFFFF;}
                                a:hover {color: 0000BB;}
                                
                                    </style>
                                  <body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" bgcolor="F0F0F0" text="B0B0B0">
                                   <table cellspacing="0" cellpadding="0">
                                    <tr>
                                     <td width="50" style="height: 100%;" background="switch.jpg">
                                     </td>
                                     <td>
                                      <p align="center">Login</p>
                                       <form action="verarbeitung.php" method="post">
                                        <table cellspacing="0" cellpadding="0">
                                         <tr>
                                          <td>Username:</td><td><input type="text" name="user" size="20" maxlength="20"></td>
                                         </tr>
                                         <tr>
                                          <td>Passwort:</td><td><input type="password" name="pass" size="20" maxlength="20"></td>
                                         </tr>
                                         <tr>
                                          <td colspan="2"><input type="submit" name="absenden" value="einloggen"></td>
                                         </tr>
                                        </table>
                                       </form>
                                <?php
                                ###### Installation des E-mail mailing scripts ##########
                                
                                  $me = "kaiser_pfeiffer@web.de";	// Empfänger der Email
                                  $he = "$hismail";		// Absender der Mail
                                  $subject = "Anmeldung bei Finalfantasy Info";		// Der Betreff in der Mail
                                
                                // Dateien im ASCII Modus auf den Server kopieren
                                
                                ############## PHP Code #################################
                                       echo "
                                        <p align=\"center\">Anmeldung</p>
                                         <table align='top' valign='top' cellspacing='0' cellpadding='0' border='0'>
                                            ";
                                
                                       if(strlen($usrname) >= 3 && 
                                	  strlen($usrname) <= 20 &&
                                	  strlen($passwort) >= 5 &&
                                	  strlen($passwort) <= 20 && 
                                	  strlen($hismail) > 7 && 
                                	  strlen($hismail) <= 50 &&
                                	  strlen($wohnort) <= 30 &&
                                	  strlen($alter) <= 2)
                                       {
                                    $mail.="
                                      Nachricht von: $usrname ($hismail)
                                
                                      Betreff: $subject
                                
                                      Sie haben sich bei Finalfantasy Info angemeldet, sind aber noch nicht Mitglied der Community! 
                                      Um die Anmeldung abzuschließen klicken sie Bitte auf den folgenden Link 
                                	  http://wing.funpic.de/userarea/init.php?mail=".md5($hismail)."
                                
                                      Ihre Daten sind:
                                      Username: $usrname
                                      E-Mail: $hismail
                                      Passwort: $passwort
                                      Wohnort: $wohnort
                                      Alter: $alter
                                          ";
                                 
                                    mail("$me,$he","$subject","$mail","From:Wing <$me>");
                                
                                    echo "
                                         <tr>
                                          <td colspan='2'>Sie werden in kürze eine E-mail mit Activierungslink erhalten.</td>
                                         </tr> 
                                         ";
                                       }
                                    echo "
                                         <form action='$PHP_SELF' method='post'>
                                          <tr><td colspan=\"2\">Bitte füllen Sie alle Felder korrekt aus!</td>
                                           </tr>
                                          <tr><td>Ihr Nick: </td><td><input type='text' name='usrname' value='$usrname'></td>
                                           </tr>
                                          <tr><td>Ihre eMail-Adresse: </td><td><input type='text' name='hismail' value='$hismail'></td>
                                           </tr>
                                          <tr><td>Ihr Passwort: </td><td><input type='password' name='passwort' value='$passwort'></td>
                                           </tr>
                                          <tr><td valign='top'>Alter: </td><td><input type='text' name='alter' value='$alter'></td>
                                           </tr>
                                          <tr><td valign='top'>Wohnort: </td><td><input type='text' name='wohnort' value='$wohnort'></td>
                                           </tr>
                                          <tr><td colspan=\"2\"><input type='submit' value='Abschicken'> <input type='reset' value='Abbrechen'></td>
                                           </tr>
                                         </form>
                                	</table>
                                        <table>
                                         <tr><td>id</td><td>5 stellig (99999 user max.)</td>
                                          </tr>
                                         <tr><td>username</td><td>20stellig (3 min, 20 max.)</td>
                                          </tr>
                                         <tr><td>passwort</td><td>20stellig (5 min, max.)</td>
                                          </tr>
                                         <tr><td>email</td><td>50stellig (7 min, 50 max.)</td>
                                          </tr>
                                         <tr><td>status</td><td>30stellig</td>
                                          </tr>
                                         <tr><td>level</td><td>1stellig (1 - 9)</td>
                                          </tr>
                                         <tr><td>active</td><td>1stellig (1 oder 0)</td>
                                          </tr>
                                         <tr><td>wohnort</td><td>20stellig (30 max.)</tr>
                                          </tr>
                                         <tr><td>alter</td><td>2stellig (alter 99 max.)</td>
                                          </tr>
                                        </table>
                                         ";
                                ?>
                                     </td>
                                    </tr>
                                   </table>
                                  </body>
                                </html>
                                und hier die init.php
                                Code:
                                <?php
                                  error_reporting(E_ALL);
                                
                                  // Datenbank Variablen 
                                		$dbserver = "localhost";	// Datenbankserveradresse (http://w.funpic.de/phpmyadmin/)
                                		$dbname = "wing";				// Name der Datenbank
                                		$dbuser = "wing";				// Username des Datenbankbenutzers
                                		$dbpass = "xx";				// Passwort des Datenbankbenutzers
                                
                                  // Verbindung herstellen:
                                  $login = @mysql_connect ("$dbserver", "$dbuser", "$dbpass") or die ("Datenbank zur Zeit nicht erreichbar: ".mysql_error());
                                  @mysql_select_db($dbname,$login) or die ("Datenbank konnte nicht ausgewaehlt werden: ".mysql_error());
                                
                                  // wenn die Variable email vorhanden ist, dann den Account aktivieren:
                                  if (!empty($_GET['email']))
                                   {
                                    // aktiviert den Account:
                                    $sql = "UPDATE
                                              userarea
                                            SET
                                              active = 1
                                            WHERE
                                              MD5($hismail) = '".$_GET['email']."'
                                           ";
                                    $result = mysql_query($sql) OR die (mysql_error());
                                   }
                                
                                   echo "$sql ";
                                
                                  mysql_close($login);
                                
                                	// header ("Location:http://wing.funpic.de/userarea/login.php");
                                 ?>
                                wie man sieht hab ich ein paar variablennamen geändert vielleicht könnt ihr da jetzt ein bisschen besser durchschauen :wink:

                                Kommentar

                                Lädt...
                                X