Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

webconqueror

Treue Seele

  • »webconqueror« ist der Autor dieses Themas

Beiträge: 124

Wohnort: Bergisch Gladbach

Beruf: Student

  • Private Nachricht senden

1

14.04.2016, 17:00

Probleme auf meiner Website

Hey,

wie viele von euch aus dem vorherigen Thread ja schon wissen, habe ich vor mir ein Browsergame zu machen.
Ich habe da jedoch gerade ein Problem und dachte mir ich mache mal einen Thread dafür auf sowie für zukünftige Probleme.

Also, es geht um meine Index.php.
Wenn ich eine E-Mail eingebe und auf senden drücke kommt immer(!) die Nachricht: Geben sie eine gültige Adresse ein usw.
Nun ist der Text natürlich gewollt, aber nur wenn eben eine nicht reguläre E-Mailadresse vorliegt (!filter_var($email, FILTER_VALIDATE_EMAIL))
Leider passiert das jedoch immer, auch bei meiner Standardadresse.
Weiß wer wieso?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$showFormular = false; // Wenn True wird Registrierung und LogIn angezeigt, wenn nicht ist der User eingeloggt.

if(isset($_POST['register'])) {
    $error = false;
    $email = $_POST['email'];
    $password = $_POST['password'];
    $nickname = $_POST['nickname'];

        if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            echo 'Bitte eine gültige E-Mail-Adresse eingeben!';
            $error = true;
        }
        if(strlen($password) > 5) {
            echo 'Bitte ein Passwort länger als 5 angeben<br>';
            $error = true;
        }   

        //Überprüfe, dass die E-Mail-Adresse noch nicht registriert wurde
        if(!$error) { 
            $statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
            $result = $statement->execute(array('email' => $email));
            $user = $statement->fetch();
        
            if($user !== false) {
                echo 'Diese E-Mail-Adresse ist bereits vergeben<br>';
                $error = true;
            }   
        }
        //Keine Fehler, wir können den Nutzer registrieren
        if(!$error) {   
            $password_hash = password_hash($password, PASSWORD_DEFAULT);
            
            $statement = $pdo->prepare("INSERT INTO users (email, password) VALUES (:email, :password)");
            $result = $statement->execute(array('email' => $email, 'password' => $password_hash));
        
            if($result) {       
                echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
                $showFormular = false;
            } else {
                echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
            }
        } 
}
?>


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<form id="register-form" action="#" method="POST">
                <h1><span>Register / LogIn</span></h1>
                
                
                <?php
                $showFormular = true; // Wird aktuell immer angezeigt!
                                    // Später soll geprüft werden ob er eingeloggt ist.
                if($showFormular) {
                ?>
                <hr>

                <p>E-Mail:
                    <input type="text" id="email" name="email_reglog">
                </p>
                <?php
                    $email = $_POST['email'];
                ?>
                <p>Passwort <font size="2.5">(Mindestlänge 5)</font>:
                    <input type="password" id="password" name="password_reglog">
                </p>
                <?php
                    $password = $_POST['password'];
                ?>
                <p>Username:
                    <input type="text" id="username" name="username_reglog">
                </p>
                <?php
                    $nickname = $_POST['username'];
                ?>
                <p>Dieser Abschnitt ist nur zum probieren. Es würde auch noch keinen Sinn machen sich zu registrieren, wozu denn auch? :D
                </p>

                <input type="submit" name="register" value="Registrieren">
                <input type="submit" name="login" value="LogIn">
                <?php
                }
                ?>
            </form>


Ihr findet doch bestimmt den Fehler.
LG Tobi :thumbsup:

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

14.04.2016, 17:09

Ihr findet doch bestimmt den Fehler.
Bestimmt. Aber mit einem Debugger findest Du ihn selbst viel schneller.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

webconqueror

Treue Seele

  • »webconqueror« ist der Autor dieses Themas

Beiträge: 124

Wohnort: Bergisch Gladbach

Beruf: Student

  • Private Nachricht senden

3

14.04.2016, 17:21

Hi BlueCobold :thumbsup:

Könntest du mir da etwas empfehlen?
Kenne mich damit nicht aus und weiß daher nicht
wie ich einen einbaue oder so.

Hab es zwar gegoogled doch da finde
ich immer nur ewig lange codes...
Zumindest für das PHP, wo denke ich mein Problem liegt.

Ich habe noch eine Erweiterung für den Browser installiert und probiert aber
der findet den Fehler auch nicht :(

LG Tobi

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

4

14.04.2016, 17:22

php tickt bei boolean Vergleichen ein wenig anders wenn ich mich richtig erinnere
also entweder !filter_var($email, FILTER_VALIDATE_EMAIL) === false oder filter_var($email, FILTER_VALIDATE_EMAIL) === true verwenden

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

5

14.04.2016, 17:23

Ich kenne PHP nicht, aber anhand dieses Beispiels aus dem Handbuch kann ich mir vorstellen wo der Fehler liegt:

filter_var

Schau dir mal genau die Ausgabe von Beispiel#1 an.
:love: := Go;

6

14.04.2016, 17:30

Tipp: Beim Registrieren wird mit Sicherheit folgender Hinweis ausgegeben: "Undefined index: email in ..."
Den kann man sogar ohne Debugger sehen. Ist er dir nicht aufgefallen?

webconqueror

Treue Seele

  • »webconqueror« ist der Autor dieses Themas

Beiträge: 124

Wohnort: Bergisch Gladbach

Beruf: Student

  • Private Nachricht senden

7

14.04.2016, 17:42

@Wirago:
=== false geht gar nicht dann lädt er die Seite net.
=== true geht zwar, aber behebt den Fehler nicht weil er bei meiner
Adresse tobiassimon1993@gmail.com immer noch anzeigt ich soll eine gültige
E-Mailadresse angeben.

@H5:
Meinst du das?

Quellcode

1
bool(false)

hilft mir nur nicht wirklich weiter ;)
Vielleicht sitze ich gerade auch auf dem Schlauch.

@Endgegner:
Beim Registrieren lädt er die Seite neu.
Der Hinweis wird mir nirgends angezeigt, zumindest sehe ich ihn nicht.
Ich habe den mal gegoogeld und ich denke du willst darauf hinaus das
entweder email oder register bei $_POST ganz oben nicht gesetzt sind?
Das erste if dient eigentlich dazu zu schauen, ob überhaupt etwas eingegeben wurde.

So viele Antworten :D
Ich werde die mal noch weiter austesten ;)

LG :love:

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

8

14.04.2016, 17:49

hab da mal nach gegooglet... sollte trotzdem mit !... === false funktionieren
http://www.w3schools.com/php/filter_validate_email.asp

webconqueror

Treue Seele

  • »webconqueror« ist der Autor dieses Themas

Beiträge: 124

Wohnort: Bergisch Gladbach

Beruf: Student

  • Private Nachricht senden

9

14.04.2016, 18:00

Jo also ich weiß auch was los war.
Er lädt natürlich eine weiße Seite wenn alles korrekt ist :D
Ich dachte erst an einen Fehler^^

Ich muss allerdings auf true ändern sonst sagt er
bei 'treo' das die E-Mailadresse okay ist und bei tobiassimon1993@gmail.com sagt er die ist falsch^^

Bei der Passwortabfrage genauso da musste ich auch erst umdrehen^^

Quellcode

1
2
3
4
5
6
7
8
if(!filter_var($email, FILTER_VALIDATE_EMAIL) === true) {
            echo 'Bitte eine gültige E-Mail-Adresse eingeben!';
            $error = true;
        }
        if(strlen($password) < 5) {
            echo 'Bitte ein Passwort länger als 5 angeben<br>';
            $error = true;
        }


Ich melde mich wieder,
LG Tobi :thumbsup:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »webconqueror« (14.04.2016, 18:05)


H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

10

14.04.2016, 18:01

Ich meine:

Zitat

Rückgabewerte ¶

Gibt die gefilterten Daten zurück oder FALSE wenn fehlgeschlagen.


Was PHP als TRUE wertet weiß ich nicht, war also nur eine Vermutung. Die Tücken von Sprachen mit schwacher Typisierung und co.
:love: := Go;

Werbeanzeige