Register script, brauche Hilfe

02/25/2016 15:25 .Arno#1
Hallo alle zusammen,

ich habe anhand eines Tutorials ein Register script geschrieben, jedoch scheint es nicht zu funktionieren.. Ich kriege keine Fehler, die Meldungen unter $msg erscheinen auch nicht, ich fülle alle Felder aus, betätige den submit Button und alle Einträge verschwinden ohne weiterer Ausgabe.

Vll könnte mir ja hier jemand helfen.. blicke da nicht durch

register.inc.php
Code:
<?php

	include ("dbconnect.php");	

	$msg = "";
	if(isset($_POST["submit"]))
	{
		$vorname = $_POST["vorname"];
		$nachname = $_POST["nachname"];
		$land = $_POST["land"];
		$adresse = $_POST["adresse"];
		$plz = $_POST["plz"];
		$ort = $_POST["ort"];
		$email = $_POST["email"];
		$benutzername = $_POST["benutzername"];
		$userpasswort = $_POST["userpasswort"];
		
		$vorname = mysqli_real_escape_string($db, $vorname);
		$nachname = mysqli_real_escape_string($db, $nachname);
		$land = mysqli_real_escape_string($db, $land);
		$adresse = mysqli_real_escape_string($db, $adresse);
		$plz = mysqli_real_escape_string($db, $plz);
		$ort = mysqli_real_escape_string($db, $ort);
		$email = mysqli_real_escape_string($db, $email);
		$benutzername = mysqli_real_escape_string($db, $benutzername);
		$userpasswort = mysqli_real_escape_string($db, $userpasswort);
		$userpasswort = md5($userpasswort);
		
		
		$sql="SELECT email FROM users WHERE email='$email'";
		$result=mysqli_query($db,$sql);
		$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
		if(mysqli_num_rows($result) == 1)
		{
			$msg = "Sorry...This email already exist...";
		}
		else
		{
			$query = mysqli_query($db, "INSERT INTO users (vorname, nachname, land, adresse, plz, ort, email, benutzername, userpasswort)VALUES ('$vorname','$nachname','$land','$adresse',$plz','$ort','$email','$benutzername','$userpasswort')");
			if($query)
			{
				$msg = "Thank You! you are now registered.";
			}
		}
	}
?>
dbconnect.php
Code:
<?php

	define('DB_SERVER', 'localhost');
	define('DB_USERNAME', 'root');
	define('DB_PASSWORD', '123456');
	define('DB_DATABASE', 'projektsa');

	$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

?>
registrieren.php
Code:
<?php

include ("./config/register.inc.php");

?>

<div id="NewsContent">
<h2>REGISTRIEREN</h2>

<div style="padding-top:20px;">


<form action="" method="post">

<?php echo $msg;?>

<table>

<tr><!--tablerow 1-->

<td> 
<label for="vorname" style="display:block;">Name:</label> 
	<input type="text" name="vorname" size="30" maxlength="15" required /> 
</td>

<td>
<label for="nachname" style="display:block;">Nachname:</label> 
	<input type="text" name="nachname" size="30" maxlength="20" required /> 
</td>

<td> 
<label for="land" style="display:block;">Land:</label> 
<select name="land" required>
	<option value="">Auswählen:</option>
	<option value="1">Österreich</option>
	<option value="2">Deutschland</option>
	<option value="3">Schweiz</option>
</select>
</td>

</tr><!--tablerow 1 END-->


<table>
<tr><!--tablerow 2-->

<td> 
<label for="adresse" style="display:block;">Adresse:</label> 
	<input type="text" name="adresse" size="30" maxlength="30" required /> 
</td>

<td>
<label for="plz" style="display:block;">PLZ:</label> 
	<input type="text" name="plz" size="12" maxlength="10" required /> 
</td>

<td>
<label for="ort" style="display:block;">Ort:</label> 
	<input type="text" name="ort" size="13" maxlength="10" required /> 
</td>

<td>
<label for="email" style="display:block;">E-Mail:</label> 
<input type="email" name="email" size="30" maxlength="30" required /> 
</td>

</tr><!--tablerow 2 END-->
</table>

<table>
<tr>
<td>
<label for="benutzername" style="display:block;">Benutzername:</label> 
<input type="text" name="benutzername" size="30" maxlength="15" required /> 
</td>

<td>
<label for="userpasswort" style="display:block;">Passwort:</label> 
<input type="password" name="userpasswort" size="30" maxlength="15" required /> 
</td>
</tr>
</table>

<div style="height:20px;"></div><!--clear-->
<tr><!--tablerow button-->
<td>
	<input type="radio" name="agb" value="" require /> Ich habe die (<a href="">Allgemeinen Geschäftsbedingungen</a>) gelesen und verstanden.
	</br>
	<div style="height:20px;"></div><!--clear-->
</td>
<td>
	<input type="submit" name="submit" value="Registrieren" />
</td>
</tr><!--tablerow button END-->

</table>


</form>
</div>

</div><!--NewsContent-->
02/25/2016 15:42 ClonePVP#2
Ist der Pfad bei der register.php beim include richtig?
02/25/2016 15:57 .Arno#3
Quote:
Originally Posted by ClonePVP View Post
Ist der Pfad bei der register.php beim include richtig?
ja der Pfad ist richtig, diesbezüglich gibt er mir auch keine Fehler aus.
Und ja bei mir zeigen alle an wegen (error_reporting(E_ALL); )
02/25/2016 16:23 algernong#4
Ist "display_errors" in deiner php.ini auf "on"?
02/25/2016 16:35 .Arno#5
Quote:
Originally Posted by algernong View Post
Ist "display_errors" in deiner php.ini auf "on"?
ja & welch einen Unterschied hat es zu dem Befehl error_reporting(E_ALL);

es stimmt an und für sich alles, habe einige echo Befehle eingebaut um zu debuggen, trotzdem kriege ich nichts verdächtiges raus.
02/25/2016 16:41 Masterkroko1#6
display_error sagt an ob die Fehler angezeigt werden oder einfach nur eine weiße Seite ausgegeben wird.
error_reporting(E_ALL) sagt einfach nur welche Fehler / Meldungen berücksichtigt werden soll.

Das heißt wenn du eine weiße Seite hast obwohl du irgendwo HTML-Output hast (außerhalb vom PHP) dann ist dein display_error nicht an
02/25/2016 17:58 algernong#7
Sorry, habe falsch gelesen, dachte, es wird danach gar nichts mehr angezeigt.

Dass die Felder nach dem Absenden leer sind ist normal, darum musst du dich selber kümmern (value Attribut setzen).

Mach mal an folgenden Stelle echo's in deinen Code:

1. Ganz am Anfang vom Coden,
2. im Block von "if(isset($_POST["submit"]))",
3. vor das innere If,
4. in den else Block davon,
5. gib dem innersten If noch einen Else-Block in dem du mysqli_error() ausgibst

Was wird noch ausgeführt, was nicht mehr? Ich denke, dass dein zweites Query (das INSERT ...) nicht funktioniert. Im Fall dass $query false ist machst du nämlich nichts.
02/26/2016 15:04 qooc#8
Hay,
ich habe es dir mal komplett umgeschrieben auf meine Art.

register.inc.php:
PHP Code:
<?php

    
include ("dbconnect.php");    

    
$msg "";
    if(isset(
$_POST["submit"]))
    {
        
$vorname $mysqli->real_escape_string($_POST["vorname"]);
        
$nachname $mysqli->real_escape_string($_POST["nachname"]);
        
$land $mysqli->real_escape_string($_POST["land"]);
        
$adresse $mysqli->real_escape_string($_POST["adresse"]);
        
$plz $mysqli->real_escape_string($_POST["plz"]);
        
$ort $mysqli->real_escape_string($_POST["ort"]);
        
$email $mysqli->real_escape_string($_POST["email"]);
        
$benutzername $mysqli->real_escape_string($_POST["benutzername"]);
        
$userpasswort $mysqli->real_escape_string($_POST["userpasswort"]);
        
$userpasswort md5($userpasswort);
        
        
        
$ergebnis $mysqli->query("SELECT `email` FROM `users` WHERE `email`='$email'");

        if (
$ergebnis->num_rows 0) {
            
$msg "Sorry...This email already exist...";

        } else {
            
$query $mysqli->query("INSERT INTO `users`(`vorname`, `nachname`, `land`, `adresse`, `plz`, `ort`, `email`, `benutzername`, `userpasswort`) VALUES ('$vorname','$nachname','$land','$adresse',$plz','$ort','$email','$benutzername','$userpasswort')");

            if(
$query) {
                
$msg "Thank You! you are now registered.";
            }
        }
    }
?>

dbconnect.php:
PHP Code:
<?php

    define
('DB_SERVER''localhost');
    
define('DB_USERNAME''root');
    
define('DB_PASSWORD''123456');
    
define('DB_DATABASE''projektsa');

        
$mysqli = new mysqli (DB_SERVERDB_USERNAMEDB_PASSWORDDB_DATABASE);
    if (
$mysqli->connect_error) {
        echo 
"Ein Fehler ist mit der Datenbank aufgetreten.";
    exit;
    }

?>

So ohne zu testen müsste es funktionieren.
achja vielleicht auch noch beim form die action auf das setzten:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">


Gruß
02/26/2016 18:01 Masterkroko1#9
Hallo qooc,

meines wissen ist das hier nicht gern gesehen den ganzen Code neu zu schreiben. Dadurch hat der Threadersteller kein Lerneffekt.

Zudem würde dein Code schon beim Datenbank-Connect scheitern. Du hast leider vergessen die defines anzupassen.
02/26/2016 19:17 qooc#10
Quote:
Originally Posted by Masterkroko1 View Post
Hallo qooc,

meines wissen ist das hier nicht gern gesehen den ganzen Code neu zu schreiben. Dadurch hat der Threadersteller kein Lerneffekt.

Zudem würde dein Code schon beim Datenbank-Connect scheitern. Du hast leider vergessen die defines anzupassen.
Wusste ich nicht.

Hab's editiert.
02/27/2016 11:51 NotEnoughForYou#11
Quote:
Originally Posted by qooc View Post
Hay,
ich habe es dir mal komplett umgeschrieben auf meine Art.

register.inc.php:
PHP Code:
<?php

    
include ("dbconnect.php");    

    
$msg "";
    if(isset(
$_POST["submit"]))
    {
        
$vorname $mysqli->real_escape_string($_POST["vorname"]);
        
$nachname $mysqli->real_escape_string($_POST["nachname"]);
        
$land $mysqli->real_escape_string($_POST["land"]);
        
$adresse $mysqli->real_escape_string($_POST["adresse"]);
        
$plz $mysqli->real_escape_string($_POST["plz"]);
        
$ort $mysqli->real_escape_string($_POST["ort"]);
        
$email $mysqli->real_escape_string($_POST["email"]);
        
$benutzername $mysqli->real_escape_string($_POST["benutzername"]);
        
$userpasswort $mysqli->real_escape_string($_POST["userpasswort"]);
        
$userpasswort md5($userpasswort);
        
        
        
$ergebnis $mysqli->query("SELECT `email` FROM `users` WHERE `email`='$email'");

        if (
$ergebnis->num_rows 0) {
            
$msg "Sorry...This email already exist...";

        } else {
            
$query $mysqli->query("INSERT INTO `users`(`vorname`, `nachname`, `land`, `adresse`, `plz`, `ort`, `email`, `benutzername`, `userpasswort`) VALUES ('$vorname','$nachname','$land','$adresse',$plz','$ort','$email','$benutzername','$userpasswort')");

            if(
$query) {
                
$msg "Thank You! you are now registered.";
            }
        }
    }
?>

dbconnect.php:
PHP Code:
<?php

    define
('DB_SERVER''localhost');
    
define('DB_USERNAME''root');
    
define('DB_PASSWORD''123456');
    
define('DB_DATABASE''projektsa');

        
$mysqli = new mysqli (DB_SERVERDB_USERNAMEDB_PASSWORDDB_DATABASE);
    if (
$mysqli->connect_error) {
        echo 
"Ein Fehler ist mit der Datenbank aufgetreten.";
    exit;
    }

?>

So ohne zu testen müsste es funktionieren.
achja vielleicht auch noch beim form die action auf das setzten:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">


Gruß
Bloß nicht. [Only registered and activated users can see links. Click Here To Register...]

Wenn schon mysqli, dann auch mit prepared statements.
02/27/2016 12:00 qooc#12
Quote:
Originally Posted by NotEnoughForYou View Post
Bloß nicht. [Only registered and activated users can see links. Click Here To Register...]

Wenn schon mysqli, dann auch mit prepared statements.
Mysqli ist schneller als PDO.

Dann mach einfach registrieren.php in die action="" rein und das Problem ist gelöst :), PDO nimmt sehr viel Performance bei größeren Seiten, aber jedem selbst überlassen.
02/27/2016 12:49 NotEnoughForYou#13
Quote:
Originally Posted by qooc View Post
Mysqli ist schneller als PDO.

Dann mach einfach registrieren.php in die action="" rein und das Problem ist gelöst :), PDO nimmt sehr viel Performance bei größeren Seiten, aber jedem selbst überlassen.
[Only registered and activated users can see links. Click Here To Register...]

Nö, abgesehen davon unterstützt auch mysqli prepared statements (ich wollte nicht drauf hinaus, dass man PDO nutzen soll - ist natürlich besser, aber kein muss).