PHP Registration funktioniert nicht richtig

09/15/2014 15:33 #Saiirex#1
Hey, vorab der code:

PHP Code:
<?
    
include "../inc/config.php";
    
mysql_select_db("saiirex") or die ("Unknown database");
    
$username$_POST["username"];
    
$password$_POST["password"];
    
$password2$_POST["password2"];
    
$email$_POST["email"];
    
    
    if (
is_null($username AND $password AND $email)){
        echo 
"Alle Felder sind Pflichtfelder und müssen ausgefüllt werden";
    }
    else{
        if(
$username == "" OR $password == "" OR $password != $password2){
            echo 
"Fehlerhafte Eingabe, bitte korrigiere deine Angaben";
            
        }
        
$password=md5($password);
        
        
$result mysql_query("SELECT id FROM account WHERE username == '$username'");
        
$amount mysql_num_rows($result);
        
        if(
$ammount == 0){
            
$insert "INSERT INTO account (username,password,email) VALUES ('$username','$password','$email')";
            
$eintragen mysql_query($insert);
            
            if(
$eintragen == true){
                echo 
"Erfolgreich registriert";
            }
            else{
                echo 
"Fehler beim registrieren, veruch es bitte zu einem späteren Zeitpunkt ernuet";
            }
        }
        else
        {
            echo 
"Benutzername schon vergeben!";
        }
    }
?>
Das Problem: Es wird kein Fehler angezeigt wenn es den gewünschten Username schon gibt.
(Es wird einfach in die DB eingetragen)
Problem 2:

if(is_null()) wird ignoriert, der Text der angezeigt werden soll, wird nicht angezeigt.

Hoffe es ist verständlich.
09/15/2014 16:06 Syc#2
Vorab: benutz [Only registered and activated users can see links. Click Here To Register...] oder [Only registered and activated users can see links. Click Here To Register...] für die Datenbank nicht das veraltete mysql.

Für Vergleiche in MySQL-Abfragen benutzt man = und nicht ==, siehe [Only registered and activated users can see links. Click Here To Register...] (kann grad nicht sagen, ob == überhaupt funktioniert)

Edit: In meiner MySQL-Version 5.5 funktioniert == gar nicht.

Für das erste Problem: Lass dir doch erstmal ausgeben, was $amount beinhaltet, wenn ein Benutzername schon vorhanden ist.

Wobei hier eh schon ein Fehler ist:
PHP Code:
$amount mysql_num_rows($result);
        
if(
$ammount == 0) {
   
// ... 

Zu dem zweiten Problem:

Benutz [Only registered and activated users can see links. Click Here To Register...] und verknüpfe die variablen mit "oder" und nicht mit "und".

Benutz du AND/OR absichtlich? Im Regelfall benutzt man && für "und" und für "oder" ||.
Siehe [Only registered and activated users can see links. Click Here To Register...]. AND und OR funktionieren zwar, aber verhalten sich teilweise anders.
09/15/2014 16:16 #Saiirex#3
Quote:
Originally Posted by Sycophantic View Post
Vorab benutz mysqli oder PDO für die Datenbank nicht das veraltete mysql

Für Select-Vergleiche benutzt man = und nicht ==, siehe [Only registered and activated users can see links. Click Here To Register...] (kann grad nicht sagen, ob == überhaupt funktioniert)

Edit: In meiner Version 5.5 funktioniert == gar nicht.

Für das erste Problem: Lass dir doch erstmal ausgeben, was $amount beinhaltet, wenn ein Benutzername schon vorhanden ist.

Wobei hier eh schon ein Fehler ist:
PHP Code:
$amount mysql_num_rows($result);
        
        if(
$ammount == 0){
...

Zu dem zweiten Problem:

Benutz isset() und verknüpfe die variablen mit "oder" und nicht mit "und".

Benutz du AND/OR absichtlich? Im Regelfall benutzt man && für "und" und für "oder" ||.
Ups, bin von C# mit "==" gewohnt.

AND, OR habe ich so gelern, danke für den Tipp.
"
$amount = mysql_num_rows($result);

if($ammount == 0){
...
}"

Wo ist der Fehler, außer "=="?
09/15/2014 16:18 Syc#4
In php ist == schon richtig, nur bei MySQL Abfragen nicht.

Bei dem Schnippsel hast du nur einen Fehler mit dem Variablennamen $amount / $ammount.

Ich hab in meinem ersten Beitrag ein bisschen was editiert ..
09/16/2014 09:25 #Saiirex#5
Jetzt funktioniert gar nix mehr :(

PHP Code:
<?
    
include "../inc/config.php";
    
mysql_select_db("saiirex") or die ("Unknown database");
    
$username$_POST["username"];
    
$password$_POST["password"];
    
$password2$_POST["password2"];
    
$email$_POST["email"];
    
    
    
//if (!isset($username || $password || $email)){
    //    echo "Alle Felder sind Pflichtfelder und müssen ausgefüllt werden";
    //}
    //else{
        
if($username == "" || $password == "" || $password != $password2){
            echo 
"Fehlerhafte Eingabe, bitte korrigiere deine Angaben";
            
        }
        
$password=md5($password);
        
        
$result mysql_query("SELECT id FROM account WHERE username LIKE '$username'");
        
$amount mysql_num_rows($result);
        
            if(
$amount == 0){
                
$insert "INSERT INTO account (username,password,email) VALUES ('$username','$password','$email')";
                
$eintragen mysql_query($insert);
                
                if(
$eintragen == true){
                    echo 
"Erfolgreich registriert";
                }
                else{
                    echo 
"Fehler beim registrieren, veruch es bitte zu einem späteren Zeitpunkt ernuet";
                }
            }
            else
            {
                echo 
"Benutzername schon vergeben!";
            }
    
//}
?>
(Habe es auskommentiert um zu testen ob das alte noch läuft.
09/16/2014 13:13 Lord iRemix#6
In PHP werden Strings durch einen . aneinandergekettet.

Wurde überall vergessen.

Beispiel:

PHP Code:
VALUES ('$username','$password','$email'
So ist es richtig:

PHP Code:
VALUES ('".$username."','".$password."','".$email."'
Zudem wurde der "PHP String" nicht durch " geschlossen, so dass die Variablen eingefügt werden konnten.
09/16/2014 13:20 Syc#7
Wo tritt denn nun der Fehler auf? Mit deiner Fehlerbeschreibung und deinem Code kann man null anfangen. Poste doch einfach den Code, den du Verwendest und der nicht funktioniert, und nicht irgendwas, was du auskommentiert hast, aber doch verwendest oder whatever.

Und versuch doch mal selbst zu debuggen.

Quote:
Originally Posted by Singleton​ View Post
In PHP werden Strings durch einen . aneinandergekettet.

Wurde überall vergessen.

Beispiel:

PHP Code:
VALUES ('$username','$password','$email'
So ist es richtig:

PHP Code:
VALUES ('".$username."','".$password."','".$email."'
Zudem wurde der "PHP String" nicht durch " geschlossen, so dass die Variablen eingefügt werden konnten.
Hier wird gar nichts verkettet, in dem Fall passt das schon so. Siehe [Only registered and activated users can see links. Click Here To Register...].
09/16/2014 13:24 #Saiirex#8
Quote:
Originally Posted by Sycophantic View Post
Wo tritt denn nun der Fehler auf? Mit deiner Fehlerbeschreibung und deinem Code kann man null anfangen. Poste doch einfach den Code, den du Verwendest und der nicht funktioniert, und nicht irgendwas, was du auskommentiert hast, aber doch verwendest oder whatever.

Und versuch doch mal selbst zu debuggen.



Hier wird gar nichts verkettet, in dem Fall passt das schon so. Siehe [Only registered and activated users can see links. Click Here To Register...].
Es wird nix in die Datenbank geschrieben, es wird nicht ausgegeben ob alles richtig eingegeben wurde oder nicht. Die Seite Aktualisiert sich einfach^^
09/16/2014 13:45 Syc#9
Debug doch einfach mal.

Funktionieren die if, wie sie sollen? (werte ausgeben lassen und prüfen)
Funktionieren die MySQL-Abfragen? In phpmyadmin mal testen.
Ein bisschen Eigeninitiative zeigen.
09/16/2014 14:06 #Saiirex#10
In N++ kann man debugen?
€:

Ich habe alles außer

PHP Code:
if($username == "" || $password == "" || $password != $password2){
    echo 
"Fehlerhafte Eingabe, bitte korrigiere deine Angaben";
            

auskommentiert und er gibt mir nicht mal das aus :o
09/16/2014 14:10 NotEnoughForYou#11
man kann auch selbst debugen, da braucht man nicht zwingend ein Programm, dass es für einen macht ;)
09/16/2014 14:14 #Saiirex#12
Der Webserver führ den PHP Teil gar nicht aus. Egal ob es auf dieser Seite oder auf einer anderen ist. Selbst eine leere Seite mit:

PHP Code:
<?php
echo "Hallo";
?>
geht nicht.

Weiß einer woran das liegen kann? Benutze bplaced als Webspace.
09/16/2014 14:21 Syc#13
Datei als .php gespeichert?
09/16/2014 14:31 #Saiirex#14
Quote:
Originally Posted by Sycophantic View Post
Datei als .php gespeichert?
:facepalm: hatte es auf HTML :D

Aber ich dachte man kann auch PHP Code in einer HTML Datei verwenden?
09/16/2014 14:51 NotEnoughForYou#15
anderst rum, man kann auch html-code in einer .php Datei verwenden. Man muss dem Server trotzdem sagen, dass es sich um eine .php handelt, weil er sie sonst nicht parst.