Een werkend mailformulier werkt niet meer omdat er een upgrade heeft plaatsgevonden van de php-versie op de webserver naar php5. Voorheen werkte het script wel.

Het betreft een script waarbij je d.m.v. een link de checkboxen voor de emailadressen allemaal kunt aanvinken of uitvinken om vervolgens een bericht op te stellen en te versturen.
Kortom,
De link <a href='$PHP_SELF?select=0
en <a href='$PHP_SELF?select=1 werken niet meer dus er kan geen email worden verzonden.

Misschien dat iemand snel ziet welke functie niet meer wordt ondersteunt of dat php5 andere commando's gebruikt.

Code:
<?php
session_start();
echo "<body bgcolor=cccccc>";

include_once("connect.php");
$webmail = "[email protected]";
$webnaam = "www.internet.nl";

if ($_SESSION['groupid']==3) {

function verwijderemailadres($id){
mysql_query("DELETE FROM mailinglist WHERE id = {$id} ");
}

if ($_GET["verwijderemailadres"]<>""){
verwijderemailadres($_GET["verwijderemailadres"]);
}




if(empty($action)) {
if($select=="1") {
$check = "checked";
} elseif($select=="0") {
$check = "";
}
echo "
<form name='Newkaart' method='post' action='$PHP_SELF'>
<table bgColor='98cb00' width='600' border='0' cellpadding='0' cellspacing='0'>


<tr>
<td width='600' align='left' valign='top' colspan='3' class='admin'>Kies hieronder eerst de personen die je wilt mailen:&nbsp;&nbsp;&nbsp;<BR><BR></td>
</tr>";

$sql = mysql_query("SELECT * FROM mailinglist WHERE mail!='' ORDER BY mail ASC");
while($mailsql = mysql_fetch_array($sql)) {
$id = $mailsql["id"];
$email = $mailsql["mail"];


echo "
<tr>
<td width='100' valign='top' class='admin'>&nbsp;</td>
<td width='20'>&nbsp;</td>
<td width='480' class='admin'><a href=mailinglist.php?verwijderemailadres=".$mailsql['id']."><font color=red><B>Verwijder</B></font></a><input type='checkbox' name='array[$id]' value='$email' $check>$email</td>
</tr>";
}
echo "
<tr>
<td width='600' align='left' valign='top' colspan='3' class='wit'><a href='$PHP_SELF?select=1' class='congres'>Selecteer alle e-mail adressen</a> / <a href='$PHP_SELF?select=0' class='congres'>Deselecteer alle e-mail adressen</a></td>
</tr>
<tr>
<td width='600' align='left' valign='top' colspan='3' class='wit'>&nbsp;</td>
</tr>
<tr>
<td width='100' valign='top' class='admin'>Onderwerp:</td>
<td width='20'>&nbsp;</td>
<td width='480' class='admin'><input name='onderwerp' type='text' id='onderwerp' size='60' maxlength='255'></td>
</tr>
<tr>
<td width='100' valign='top' class='admin'>Bericht:</td>
<td width='20'>&nbsp;</td>
<td width='480' class='admin'><textarea name='bericht' cols='80' rows='25' class='text'></textarea></td>
</tr>
<tr>
<td width='600' colspan='3' align='center'><input name='verander_item' type='submit' id='verander_item' value='Versturen'><input name='reset' type='reset' id='reset' value='Terug'></td>
</tr>
<tr>
<td width='600' align='left' valign='top' colspan='3' class='wit'>&nbsp;</td>
</tr>
</table>
<input name='action' type='hidden' id='action' value='sendemail'>
</form>";


echo "
<tr>
<td width='600' align='left' valign='top' colspan='3' class='wit'>&nbsp;</td>
</tr>
<tr>
<td width='600' align='left' valign='top' colspan='3' class='wit'> <a href=index.php><B>Terug naar adminpanel</B></A></td>
</tr>";

echo "</table>";
} elseif($action=="sendemail") {
if(empty($onderwerp)) {
echo "Wilt u astublieft een onderwerp invoeren?";
} elseif(empty($bericht)) {
echo "Wilt u astublieft een bericht invoeren?";
} else {
foreach ($array as $email) {
echo "<a href=index.php><B>Terug naar adminpanel</B></A>";
if(mail($email,$onderwerp,$bericht, "From:$webnaam <$webmail>\n". "Reply-To:$webnaam <$webmail>\n")){

echo "$email [OK]<br>\n";
} else {
echo "$email [ERROR]<br>\n";
}
}
}
}
}
?>
<?php
echo "
<form name='Newkaart' method='post' action='" . $_SERVER['PHP_SELF'] . "'>
...
?>

Het is trouwens beter (voldoet aan W3C standaard) om quotes te gebruiken in HTML, dus:

<form name="formNaam" method="post">



Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

$_SERVER['PHP_SELF'] is gevoelig voor url-XSS. Niet gebruiken dus.
Gebruik liever $_SERVER['SCRIPT_NAME'], aangezien deze het door de server aangeroepen path gebruikt, en niet, zoals $_SERVER['PHP_SELF'] doet, het path die de gebruiker heeft aangeroepen (dus zonder dat deze translated is).
@SanThe:

Er zijn meer Martijn's in de wereld.
CSS is overigens ook geen overbodige luxe...
Offtopic:
Fout in script door upgrade naar PHP5

Nee, de fout had je al in het script zitten en had een jaar of 6 geleden al aan het licht moeten komen. Dankzij het ontbreken van enig onderhoud en beheer op de server waar dit script al die tijd heeft gedraaid, is het niet eerder aan het licht gekomen. Nu je éindelijk met PHP 5 op een goed/beter geconfigureerde server werkt, blijkt dat jouw script zo lek als een mandje was.

Superglobals, google daar maar eens op.

Het probleem heeft dus helemaal niets met versie 5 te maken, maar met veiligheidslekken die nu eindelijk zijn gedicht.
En welke gebruikte superglobal zou dan in het script verkeerd staan?

Reageren