Wie kan mij helpen met een "rare" gebeurtenis.

Ik heb een profielen systeem op m'n site en die deed het helemaal goed. Tot ik vandaag keek op m'n site en opeens gaf hij allemaal fouten aan, o.a. op de aanmeld pagina: http://www.shakiramebarak.nl/?page=fans/aanmelden

Nou heb ik m'n host al een mail gestuurt met de vraag of ze misschien een nieuwe php versie geinstalleerd hebben. Want het is wel raar dat hij opeens die fouten geeft.

Hoop dat jullie een antwoord weten.

Bedankt,
Menno
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.
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();
?>
Eigenlijk de meest gebruikte fout is dat je $array[key]
niet schrijft als $array['key'] als de key een string is.
if($_POST[aanmelden])
{
if(!$_POST[naam])

Kan je vervangen door:

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(empty($_POST['naam']))
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
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';
}
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.";
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?
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
Voor het nodige naslagwerk:

"ze" hebben register_globals uitgezet.

Reageren