Dit had je kunnen voorkomen door gewoon netjes te scripten. En dat zal inderdaad komen doordat je host (eindelijk) zijn PHP heeft geupdate.
Geef eens een klein stukje code dan zal ik een voorbeeld geven.
Link gekopieerd
dit is de aanmelden.php
<?php
include_once("config.php");
$select = "SELECT * FROM members WHERE gebruikersnaam='" .
$_POST[gebruikersnaam] . "'";
$query = mysql_query($select);
$bestaatgebruikersnaam = mysql_num_rows($query);
if($_POST[aanmelden])
{
if(!$_POST[naam])
{
echo "<li>Geen voornaam ingevuld.";
}
if(!$_POST[gebruikersnaam])
{
echo "<li>Geen Gebruikersnaam ingevuld.";
}
if(!$_POST[wachtwoord])
{
echo "<li>Geen Wachtwoord ingevuld.";
}
if(!$_POST[email])
{
echo "<li>Geen E-mail adres ingevuld.";
}
elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",
$_POST[email])) {
echo "<li>Geen geldig Email Adres ingevuld.";
}
elseif(!eregi("[A-Za-z0-9-]", $_POST[gebruikersnaam])) {
echo "<li>De Gebruikersnaam die je wilt gebruikt karakters die niet zijn
toegestaan.";
}
elseif($bestaatgebruikersnaam == 1)
{
echo "<B>Er is een Fout Opgetreden.</b><BR><li>De Gebruikersnaam die jij wilt is
al in gebruik.";
}
else {
function Activatie($lengte=10) {
$tekens = array(a, b, c, d, e, f, g, h, i, j, l, k, j, h, g, f, d, s, s, a,
m, n, n, m, w, r, t, y, u, p);
$random = '';
for($i = 1; $i <= $lengte; $i++)
$random .= $tekens[rand(0,10)];
return strtoupper($random);
}
$activatiecode = Activatie();
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: ".$jouwebsite." <".jouwemail.">\n";
mysql_query("INSERT INTO members (id, ondertitel, geslacht, avatar, gebruikersnaam, naam, wachtwoord, status, email, ip, activatie, datum) Values ('', 'Nieuw Lid', '".$_POST['geslacht']."', 'noavatar.jpg', '".$_POST['gebruikersnaam']."', '".$_POST['naam']."', '".$_POST['wachtwoord']."', 'Lid', '" . $_POST['email'] . "', '" . $_POST['ip'] . "', '".$activatiecode."', '".$_POST['datum']."')") or die(mysql_error());
mail("".$_POST['email']."", "Activatie Account Shakira Mebarak", "
Beste ".$_POST['naam'].", <br>
Je hebt je zojuist aangemeld op ".$jouwebsite.". <br>
Om te kunnen inloggen op je profiel moet je je profiel activeren door <a href=http://www.shakiramebarak.nl/?page=fans/activeren&activatie=".$activatiecode."&user=".$_POST['gebruikersnaam'].">hier</a> te klikken.<br>
<br>
Je logingegevens zijn: <br>
---------------------------------------------------------------------- <br>
Gebruikersnaam: ".$_POST['gebruikersnaam']." <br>
Wachtwoord: ".$_POST['wachtwoord']." <br>
Rank: Lid <br>
---------------------------------------------------------------------- <br>
<br>
Vriendelijke Groeten,<br>
Menno Bliek.<br>
<a href=http://www.shakiramebarak.nl>Shakira Mebarak</a> / <a href=http://www.shakiramebarak.nl/forum>Shakira Mebarak Forum</a><br>
",$headers);
echo "Je bent succesvol aangemeld er word een email naar je gestuurd om je
profiel te activeren.<BR>
<BR> Klik <a href=?page=main>hier</a> om naar de indexpagina te gaan.";
}
}
else {
$date = date("d-m-Y H:i:s");
$ipadres = $_SERVER['REMOTE_ADDR'];
echo "<table><form method=POST action=?page=fans/aanmelden>
<td>Gebruikersnaam: <TD><input type=text name=gebruikersnaam
value='".$_POST['gebruikersnaam']."' maxlength=12> *<tr>
<td>voornaam:<TD><input type=text name=naam value='".$_POST['naam']."'><input
type=hidden name=datum value='".$date."'> *<tr>
<td>Wachtwoord: <TD><input type=password name=wachtwoord
value='".$_POST['wachtwoord']."'><input type=hidden name=ip
value='".$ipadres."'> *<tr>
<td>Email:<TD><input type=text name=email value='".$_POST['email']."'> *<tr>
<td>Geslacht<TD><select name=geslacht><option value=Man>Man</option><option
value=Vrouw>Vrouw</option><option value=Stel>Stel</option></select><tr>
<td><td><input type=submit name=aanmelden value=Aanmelden></form>
</table>";
echo '<br>';
echo '* verplicht.';
}
ob_end_flush();
?>
Link gekopieerd
Eigenlijk de meest gebruikte fout is dat je $array[key]
niet schrijft als $array['key'] als de key een string is.
Link gekopieerd
if($_POST[aanmelden])
{
if(!$_POST[naam])
Kan je vervangen door:
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(empty($_POST['naam']))
Link gekopieerd
Arjan Kapteijn schreef op 29.08.2006 17:02
if($_POST[aanmelden])
{
if(!$_POST[naam])
Kan je vervangen door:
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(empty($_POST['naam']))
Thanks, de eerste fouten zijn weg, mar nu heb ik deze fouten nog:
Notice: Undefined index: gebruikersnaam in /usr/home/web/snl121067/fans/aanmelden.php on line 50
Notice: Undefined index: gebruikersnaam in /usr/home/web/snl121067/fans/aanmelden.php on line 130
Notice: Undefined index: naam in /usr/home/web/snl121067/fans/aanmelden.php on line 131
Notice: Undefined index: wachtwoord in /usr/home/web/snl121067/fans/aanmelden.php on line 134
Notice: Undefined index: email in /usr/home/web/snl121067/fans/aanmelden.php on line 136
op line 50 staat:
$_POST['gebruikersnaam'] . "'";
op 130:
value='".$_POST['gebruikersnaam']."' maxlength=12> *<tr>
op 131:
<td>voornaam:<TD><input type=text name=naam value='".$_POST['naam']."'><input
op 134
value='".$_POST['wachtwoord']."'><input type=hidden name=ip
en 136:
<td>Email:<TD><input type=text name=email value='".$_POST['email']."'> *<tr>
bedankt alvast
Link gekopieerd
Omdat je nog niks verstuurd hebt zit er nog niks in die post... maak er dus zoiets van:
if(isset($_POST['waarde']))
{
echo 'waarde is ingevuld';
}
Link gekopieerd
Enorm bedankt,
Maar...
Als ik nu een gebruikersnaam invul die al bestaat registreed hij hem gewoon....
Dus er kunnen meerdere mensen met de zelfde gebruikersnamen zijn.
dit staat er in de code:
elseif(!eregi("[A-Za-z0-9-]", $_POST['gebruikersnaam'])) {
echo "- De Gebruikersnaam die je wilt gebruikt karakters die niet zijn
toegestaan.";
}
elseif($bestaatgebruikersnaam == 1)
{
echo "<B>Er is een Fout Opgetreden.</b><BR><li>De Gebruikersnaam die jij wilt is
al in gebruik.";
Link gekopieerd
waar komt die $bestaatgebruikersnaam vandaan? Juist... uit je query. Een query die je helemaal niet controlleerd maargoed. En waarom haal je je hele database leeg als je alleen wilt weten hoevaak een bepaalde gebruikersnaam voorkomt?
Link gekopieerd
krijg deze fout nog steeds:
Notice: Undefined index: gebruikersnaam in /usr/home/web/snl121067/fans/aanmelden.php on line 49
Dit staat in op 49:
$select = "SELECT * FROM members WHERE gebruikersnaam='".($_POST['gebruikersnaam'])."'";
En wou even zeggen, ik heb dit script gedownload en ben een beginner....
Had ik eindelijk het script werkend gaan ze een update doen :S
Link gekopieerd
Voor het nodige naslagwerk:
"ze" hebben register_globals uitgezet.
Link gekopieerd