Habe Problem mit mein Script!

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hallo,
    ich habe probleme mit meinem Skript. Ich habe heute selbst eines geschrieben da ich gerade mich an PHp wende und habe nirgendswo etwas kopiert (sonst lern ich ja nichts :D ). Also mein eigentliche Problem ist, dass ich bei activate.html einen falschen Code eingebe und er dann mir sagt:

    Der Code ist korrekt und dein Benutzerkonto wurde aktiviert!


    Wenn ich nichts eingebe, dan bringt er mir erst:


    Der Code ist falsch!


    So, ich poste mal das alles in einen Spoiler wie ich das mache (wäre sonst zu lang) ;)



    So, ich freue mich auf antwort. Wer mir kommt mit "Boah mit Textdatei ist es total Hackerfutter", muss ich sagen, dass ich es selbst weis aber imoment PHP lern und noch kein MySQL :D


    Eddit: Danke an dev/null/, der das schöne "User per Mail aktivieren" Tutorial geschrieben hat. Ohne ihn, würde ich nicht wissen wie man eine Zufalszahl erstellen lassen kann. :thumbup: Wer das Tutorial lesen will, klickt bitte hier :thumbup: (Mods, Link bitte nicht entfernen, da es ja auf einen Beitrag in das BisaBoard leitet ;) )

  • Erstmal legst du als Aktivierungsdatei mehrere an sosnt wird die eine immer wieder überschrieben.


    Dann guck dir mal die Reihenfolge der Funktionen / Variablenzuweisungen in der activate.php an.


    Extra keine genaue Lösung damit man was lernt :-)

  • Erstmal legst du als Aktivierungsdatei mehrere an sosnt wird die eine immer wieder überschrieben.

    Wie? Das hab ich jetzt nicht ganz verstanden. Mehrere Datein?


    activate.php


    Meinst du so? Warte ich teste schnell :thumbup:


    Eddit: Jetzt kann ich einfach absenden und er bringt mir eine OK-Meldung :S

  • Mehrere Dateien mit den Aktivierungscodes sonst wird die eine immer überschrieben.


    z.B. active-username.txt


    Dein Script msus so aussehen:



    Nur der Aktivierungsmechanismus fehlt.

  • OK, danke ich werde es mal testen und mit notieren das ich weiterarbeiten kann :thumbup:


    Eddit: Es geht nicht. Egal was ich mache, ich habe einen falschen und den richtigen Code mehrmals eingegeben. Er birngt aber immer:
    Der Code ist falsch!


    Hm, ich habe auch keine Lösung gefunden. Ich such solange weiter bis du postest ;)

  • Erstmal solltest du bei der Register.php prüfen ob die Daten überhaupt eingegeben wurden, bevor du die Email versendest. Sonst wird immer, bei jedem Seitenaufruf eine Versendet.


    An dem anderen Code sehe ich keinen Fehler. Teste evtl. mal ob ein gültiger Code in der register.txt ist. Und wie lang der ist wenn länger als 9 Zeichen lese ich nicht genug aus. Aber es wird nur eine Zufallszahl bis 9 Zeichen ausgesucht.

  • Genau 9 Ziffern und der Code ist:
    538381769


    Ich habe ihn sogar aus der Textdati kopiert.


    Eddit: Zur Register.php, habe ich probleme. Ich kann sowas noch nicht. Ich kann zwar Eingaben überprüfen aber nicht das er erst sendet, wenn alles ausgefüllt ist. Ich glaub da muss man irgendwas mit TRUE anstellen. Dann zu Textdatei, kann ich nicht mehr als eine Sache eintragen. Dazu brauch ich nämlich noch irgendwas wer ett, wenn du sowas amchen kanns das ein | zur Abtrennung benutzt wird.


    Eddit: Ah, habe was gefunden bei einem Tutorial einer Webseite. Das Skript sieht so aus (ich probiers gleich mal :thumbup: ):


    PHP
    $eintrag="$nickname|$email|$pw|$code";
    
    
       $datei = fopen("register.txt", "a");
       fwrite($datei, "\n".$eintrag);
       fclose($datei);
  • Wie wärs damit?
    Wenn du PHP 5 hast, kannst du zum lesen und speichern von Dateien einfach das nutzen:
    $dateiinhalt = file_get_contents($dateiname);
    file_put_contents($dateiname, $dateiinhalt);


    Und du kanns aus einem array einen string machen und umgekehrt:
    $string = serialize($array);
    $array = unserialize($string);


    so, wenn du beides verbindest, kannst du ein array in einer textdatei speichern..
    damit kannst du das ganze etwas einfacher gestalten..

    :thumbsup:

    Yeah, hatte grade meinen 256. Beitrag :D Beim 512. wird dann aber richtig gefeiert :D

    Einmal editiert, zuletzt von Chris! ()

  • Hilft mir net wirklich weiter. Wie gesagt ich weis nicht was ein Array ist und bräuchte einen fertigen Quelltext ansonsten gehts net. Ich will ja nur an der activate.php rumbasteln. Wenn du das amchst das du mir einen fertigen Code schickst, wär ich dir dankbar. Sonst kann ich nichts damit anfangen, sorry... :|

  • wenn du immer noch nicht weiß was ein array ist , poste ich hier mal ...
    (hoffe das wird jetzt nicht, wie immer ,als spam angesehen)


    also ein "normales array" geht so:

    PHP
    $array = array ("teil1", "teil2", "teil3");echo $array[1]; //PHP fänngt immer bei 0 an zu zählen, also wird hier "teil2" ausgegeben


    oder

    PHP
    $array[0] = "Teil1";$array[1] = "Teil2";$array[2] = "Teil3"; // wenn du nach der reihenfolge arbeitest , kannst du auch die zahlen weglassen echo $array[1];




    dann gibt es noch assoziative arrays:

    PHP
    $person = array ( "Vorname" => "Daniel" , "Name" => "Meier" );echo $person["Vorname"]; //gibt dann Daniel aus, wenn du alles ausgeben möchtest, würde ich das mit einer for schleife , wenn du auch den schluessel ausgegeben haben möchtest nimm die foreach schleife


    oder

    PHP
    $personen["Vorname"] = "Daniel";$personen["Name"] = "Meier";echo $person["Vorname"]; //ebenso wie oben



    und natürlich auch die mehrdimensionalen arrays:

    PHP
    $person1 = array ( "Vorname" => "Daniel" , "Name" => "Meier" );
    $person2 = array ( "Vorname" => "Max" , "Name" => "Bäcker" );
    $person3 = array ( "Vorname" => "Markus" , "Name" => "Müller" );
    
    
    $personenliste = array ( $person1, $person2, $person3 );
    echo $personenliste[1]["Name"]; // gibt dann Bäcker aus


    war ne menge tipparbeit , hoffe es wird nicht wieder gelöscht


    mfg

  • ich kann dir nur davon abraten, da du nicht sicher genug programmierst.. also ich mein bei mysql muss man auf vieles achten und dazu muss man mehr wie die basics verstehen..

  • OK, ich frag dich halt wegen Sicherheitsdingens da. Also ich habe noch ne Frage zu meinem Skript. Wenn ein User sich registriert muss er auf die activate.html zugreifen und sein Passwort und seinen Aktivierunsgcode den er per Mail bekommen hat, eingeben. Dann wird abgesendet und dann soll MySQL bzw. PHP sagen ob der Code und das Passwort aus der Datenbank stimmen. Wenn ja, trägt, kommt eine Meldung die sagt dein Benutzerkonto wurde jetzt aktiviert. Dann soll in der Tabelle aktiv eine 1 stehen das es soeben aktiviert wurde. Wenn noch nicht aktiviert wurde steht da eine 0. So weit so gut, man sollte beim Login dann überprüfen, ob eine 0 in der Tabelle aktiv steht. Wenn ja, Meldung ausgeben das der User erst das Konto aktivieren soll. Wenn eine 1 drinn steht, wird erfolgreich eingeloggt wenn die Daten aus der Datenbank überein stimmen. Hat da jemand eine Idee wie ich vorgehe und irgendwie ein Tut oder ein Codeschnipsel? Ich will nämlich gerne weiter programmieren hab auch schon rumprobiert... ;)


    Eddit: Ach und Chris, eine Sicherheitsmasnahme hab ich schon. Das Passwort in md5 umgewandelt und in die Datenbank eingetragen. Sonst frag ich dich einfach :thumbup:

  • Erstmal die Daten für die Datenbank mit den entsprechenden Funktionen: intval() mysql_real_escape_string() absichern, ist das mindeste.


    Dann solltest du bitte mein Aktivierungstutorial genau befolgen. Sonst benötigst du 2 Spalten statt einer.

  • Ich werds mir durchlesen. Wenn ich Probleme habe, poste ich hier ;)


    Eddit: Und was sollte mir das helfen? ich sehe da keine PHP codes auser dem rand und so. Ich werde es mir dann nochmal durchlesen. Wömöglich nur überflogen :blush: