Archief - PHP: script wil niet werken

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

RaGeR

Legacy Member
Hallo,

Ik heb een php-script gemaakt dat ermoet voor zorgen dat iemand zich kan registreren op een site en dat ie dan in de databse terechtkomt om dan later zich op een andere pagina te kunnen inloggen.
De 2 script heten register.php en dat werkt, maar mijn registerfuntion.php doet niet wat ie zou moeten doen, en na enkele avonden me er kapot op gepiekerd te hebben van wat de fout zou kunne zijn, kom'k hier om hulp vragen.

Code:
<html>
    <head>
        <title>Register</title>
		    </head>
    <body>
	

<?php
$naam = trim($_POST['naam']);
$voornaam = trim($_POST['voornaam']);
$adres = trim($_POST['adres']);
$woonplaats = trim($_POST['woonplaats']);
$email = trim($_POST['email']);
$passwoord = trim($_POST['passwoord']);

//stripslashes($string) bij opstarten


if(($naam=="")||($voornaam=="")||($adres=="")||(woonplaats=="")||($email=="")||(passwoord=="")||!(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)))
{
echo "<size=4>Gelieve de gegevens correct in te vullen<font color='red'>";
echo "<ul>";

	if($naam==""){echo "<li>Uw naam is niet ingevuld</li>";}
	if($voornaam==""){echo "<li>Uw voornaam is niet ingevuld</li>";}
	if($adres==""){echo "<li>Uw adres is niet ingevuld</li>";
	if($woonplaats==""){echo "<li>Uw woonplaats is niet ingevuld</li>";
	if($email==""){echo "<li>Uw email-adres is niet ingevuld</li>";
	if($passwoord==""){echo "<li>Uw passwoord is niet ingevuld</li>";

	}else{
	if(!(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email))){echo "<li>Uw email-adres voldoet niet aan de normen</li>";}
	}
echo "</ul></font>";
echo "<a href=\"register.php\"><==Keer terug</a>";
}
else
{
			    //database connectie
			    $user = "***";
			    $pass = "***";
			    $host = "localhost";
			    $dbdb = "register";

			    if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
			    {
			        echo "Kan geen verbinding maken met de database.";
			        exit();
			    }

			    unset($user);
			    unset($pass);
			    unset($host);
			    unset($dbdb);

			    $sql = "INSERT INTO register (naam,voornaam,adres,woonplaats,email,passwoord) values('" . $naam . "','" . $voornaam . "','" . $adres . "','" . $woonplaats . "','" . $email . "','" . "','" . $passwoord . "')";

			    $res = mysql_query($sql) or die("Ongeldige query: " . mysql_error());

				usleep(200);

				$sql = "Select * from register where naam='" . $naam . "' and voornaam='" . $voornaam . "' and adres='" . $adres . "' and woonplaats='" . $woonplaats . "' and email='" . $email . "' and woonplaats='" . $woonplaats . "';
				$res = mysql_query($sql);
			    if (mysql_num_rows($res) >= 1)
			    {
				   while ($row = mysql_fetch_array($res))
			        {
			        $id = stripslashes($row[id]);

 							$mail= "<h1> Bevestiging registratie Electro Jorissen.be</h1> ";
							$mail.= <u><b><size=4>Uw Gegevens</u></b></size>
							$mail.= 
							$mail.= <u>Naam:</u> $naam $voornaam
							$mail.= <u>Adres:</u> $adres te $woonplaats
							$mail.= <u>Passwoord:</u> $passwoord
							$mail.=
							$mail.=<b>Bedankt voor uw registratie! Hopelijk mogen wij u snel begroeten in onze web-shop.</b>
							


			    mail($email,"Registratie",$mail,"From:***\r\nContent-type:text/html");

			   echo "<size=4><color=black>U bent geregistreerd. Er is een mail verstuurd met daarin u gegevens.<br>U kunt u nu inloggen in de web-Winkel.</color></size>";


			        }

			    }



			   }

			?>


				</div>
		</td></tr>
		    </body>
</html>

Wssl zit de fout ergens in een klein hoekje, maar u eigen fouten ziet ge meestal niet / niet zo snel.

Tyfius

Legacy Member
Er stonden verschillende fouten in.
Deels uit verveling heb ik er eens naar gekeken.

PHP:
<html>
<head>
    <title>Registreer</title>
</head>

<body>
    
    <?php
    $naam       =   trim($_POST['naam']);
    $voornaam   =   trim($_POST['voornaam']);
    $adres      =   trim($_POST['adres']);
    $woonplaats =   trim($_POST['woonplaats']);
    $email      =   trim($_POST['email']);
    $passwoord  =   trim($_POST['passwoord']);   // SPELLING: paswoord of password, maar passwoord ?!
    
    if (!isset($naam) || !isset($voornaam) || !isset($adres) || !isset($woonplaats) || !isset($email) || !isset($passwoord)) {
        echo '<size="4">Gelieve de gegevens correct in te vullen<font color="red">';
        echo '<ul>';
        
        if (!isset($naam)) {
            echo '<li>Uw naam is niet ingevuld</li>';
        }
        if (!isset($voornaam)) {
            echo '<li>Uw voornaam is niet ingevuld</li>';
        }
        if (!isset($adres)) {
            echo '<li>Uw adres is niet ingevuld</li>';
        }
        if (!isset($woonplaats)) {
            echo '<li>Uw woonplaats is niet ingevuld</li>';
        }
        if (!isset($email)) {
            echo '<li>Uw email-adres is niet ingevuld</li>';
        }
        if (!isset($passwoord)) {
            echo '<li>Uw passwoord is niet ingevuld</li>';
        }
        if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
            echo '<li>Uw email-adres voldoet niet aan de normen.</li>';
        }
        
        echo '</ul></font>';
        echo '<a href="register.php"><==Keer terug</a>';
    } else {
        //database connectie
        $user = "***";
        $pass = "***";
        $host = "localhost";
        $dbdb = "register";
    
        if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass))) {
            echo "Kan geen verbinding maken met de database.";
            exit();
        }
        
        unset($user);
        unset($pass);
        unset($host);
        unset($dbdb);
        
        $sql = "INSERT INTO register (naam, voornaam, adres, woonplaats, email, passwoord) VALUES ('".$naam."','".$voornaam."','".$adres."','".$woonplaats."','".$email."','".$passwoord."')";
        // Uw " teken achteraan vergeten, en een lege plaats voor paswoord (waar alleen een . stond)
        $res = mysql_query($sql) or die("Ongeldige query: ".mysql_error());
        
        if (mysql_num_rows($res) >= 1) {
    	    while ($row = mysql_fetch_array($res)) {
                $id = stripslashes($row['id']);
                
                /*
                 * Hier heb je verschillende fouten gemaakt.
                 * Geen ;
                 * Geen "-tekens om de strings af te sluiten
                 */
        		$mail   =   '<h1> Bevestiging registratie Electro Jorissen.be</h1>';
    			$mail   .=  '<u><b><size="4">Uw Gegevens</u></b></size>';
    			$mail   .=  "\n";   // Ik veronder stel dat je een witregel wil.
    			                    // Die ga je moeten aanduiden met een \n (newline) of een \r (return).
    			                    // Deze moeten evenwel tussen dubbele "-tekens.
    			$mail   .=  '<u>Naam:</u> '.$naam.' '.$voornaam;
    			$mail   .=  '<u>Adres:</u> '.$adres.' te '.$woonplaats;
    			$mail   .=  '<u>Passwoord:</u> '.$passwoord;
    			$mail   .=  "\n";
    			$mail   .=  '<b>Bedankt voor uw registratie! Hopelijk mogen wij u snel begroeten in onze web-shop.</b>';
    			
    			mail($email,"Registratie",$mail,"From:***\r\nContent-type:text/html");
    			
    			echo '<size="4"><color="black">U bent geregistreerd. Er is een mail verstuurd met daarin u gegevens.<br />U kunt u nu inloggen in de web-Winkel.</color></size>';
    		}
    	}
    }
    ?>
</body>
</html>

Rombo

Legacy Member
Het eerste wa ik zie:

$sql = "INSERT INTO register (naam,voornaam,adres,woonplaats,email,passwoord) values('" . $naam . "','" . $voornaam . "','" . $adres . "','" . $woonplaats . "','" . $email . "','" . "','" . $passwoord . "')";

vlak voor paswoord hebde het volgende: ,'" . "',
ge wilt iets in 6 kolommen invoegen en ge hebt 7 dingen

Dan nog enkele tips die ik persoonlijk altijd gebruik/het u gemakkelijker kunnen maken

gebruik een kolom: id (auto increasing, uniek nummer), da is altijd makkelijker om met uw gegevens te werken
ge kunt dan bv ne update doen where id = 5

het is misschien ook goed om aan ne gebruiker ne gebruikersnaam te geven (bekijk het als ne nickname voor het forum waarmee ge ook inlogt samen met het paswoord) en zorg dat die uniek blijft (ook eventueel te gebruiken om gegevens op te zoeken dan)

Voor de rest zie ik nie meteen wa ge fout doet, maar met de omschrijving 'doet niet wat het moet doen' is het natuurlijk ook moeilijk voor ons om iets te vinden

RaGeR

Legacy Member
Bedankt Tyfius, eens zien of ik de fouten nu opgelost zijn, anders hoort ge nog van me :)

RaGeR

Legacy Member
Hmmmm, raar.

Ik heb het script volledig aangepast zoals je hebt gezegd, maar als ik dan alles invul of niks invul, ik krijg iedere keer hetzelfde resultaat.
En dat is: gewoon een blanco pagina (dus geen 404-error of whatever)

het script:

PHP:
<html>
    <head>
        <title>Register</title>
		    </head>
    <body>
	

<?php
$naam = trim($_POST['naam']);
$voornaam = trim($_POST['voornaam']);
$adres = trim($_POST['adres']);
$woonplaats = trim($_POST['woonplaats']);
$email = trim($_POST['email']);
$paswoord = trim($_POST['paswoord']);

//stripslashes($string) bij opstarten


if(($naam=="")||($voornaam=="")||($adres=="")||(woonplaats=="")||($email=="")||(paswoord=="")||!(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)))
{
echo "<size=4>Gelieve de gegevens correct in te vullen<font color='red'>";
echo "<ul>";

	if($naam==""){echo "<li>Uw naam is niet ingevuld</li>";}
	if($voornaam==""){echo "<li>Uw voornaam is niet ingevuld</li>";}
	if($adres==""){echo "<li>Uw adres is niet ingevuld</li>";
	if($woonplaats==""){echo "<li>Uw woonplaats is niet ingevuld</li>";
	if($paswoord==""){echo "<li>Uw paswoord is niet ingevuld</li>";
	if($email=="")
	{echo "<li>Uw email-adres is niet ingevuld</li>";
	}else{
	if(!(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email))){echo "<li>Uw email-adres voldoet niet aan de normen</li>";}
	}
echo "</ul></font>";
echo "<a href=\"register.php\"><==Keer terug</a>";
}
else
{
			    //database connectie
			   
			    $host = "localhost";
			    $dbdb = "register";

			    if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
			    {
			        echo "Kan geen verbinding maken met de database.";
			        exit();
			    }

			    unset($user);
			    unset($pass);
			    unset($host);
			    unset($dbdb);

			    $sql = "INSERT INTO register (naam, voornaam, adres, woonplaats, email, passwoord) VALUES ('".$naam."','".$voornaam."','".$adres."','".$woonplaats."','".$email."','".$paswoord."')";

			    $res = mysql_query($sql) or die("Ongeldige query: " . mysql_error());

				usleep(200);

				$sql = "Select * from register where naam='" . $naam . "' and voornaam='" . $voornaam . "' and adres='" . $adres . "' and woonplaats='" . $woonplaats . "' and email='" . $email . "' and paswoord='" . $paswoord . "';
				$res = mysql_query($sql);
			    if (mysql_num_rows($res) >= 1)
			    {
				   while ($row = mysql_fetch_array($res))
			        {
			        $id = stripslashes($row[id]);

 							$mail= "<h1> Bevestiging registratie Electro Jorissen.be</h1> ";
							$mail.= <u><b><size=4>Uw Gegevens</u></b></size>;
							$mail.= "\n";
							$mail.= <u>Naam:</u> $naam $voornaam;
							$mail.= <u>Adres:</u> $adres te $woonplaats;
							$mail.= <u>Paswoord:</u> $paswoord;
							$mail.= "\n";
							$mail.=<b>Bedankt voor uw registratie! Hopelijk mogen wij u snel begroeten in onze web-shop.</b>;
							


			    mail($email,"Registratie",$mail,"From:[email protected]\r\nContent-type:text/html");

			   echo "<size=4><color=black>U bent geregistreerd. Er is een mail verstuurd met daarin u gegevens.<br>U kunt u nu inloggen in de web-Winkel.</color></size>";


			        }

			    }



			   }

			?>


				</div>
		</td></tr>
		    </body>
</html>

dJeez

Legacy Member
Vervang de woonplaats=="" in uw if alvast maar eens door $woonplaats=="". En zet bovenaan je script eens de error_reporting op E_ALL, zodat je dergelijke fouten sneller zal opmerken.

killgore

Legacy Member
dJeez zei:
Vervang de woonplaats=="" in uw if alvast maar eens door $woonplaats=="". En zet bovenaan je script eens de error_reporting op E_ALL, zodat je dergelijke fouten sneller zal opmerken.
in geval van php 5: E_ALL | E_STRICT

u doet ook geen check of uw post vars wel bestaan, is foute code.

voor de "" zou ik ook anders werken, met een fout var (die bijhoudt of er een fout is opgetreden of niet)
bv.
$error = ""; // VOOR gebruik
if(empty($naam)) $error.="Naam niet ingevuld <br />";
if(!empty($error))
//druk fout af

Mulle

Legacy Member
Gebruik je ook niet beter addslashes bij de strings om deze toe te voegen aan de database?

killgore

Legacy Member
Mulle zei:
Gebruik je ook niet beter addslashes bij de strings om deze toe te voegen aan de database?
ja.

Maar voor " en ' gebruik ek persoonlijk liever eerst htmlspecialchars
dan enkel nog addslashes om de bestaande \ te wijzigen ;).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan