formmail: lille ændring ønskes!
Hey Eksperter!Jeg har et dumt problem og jeg er dum til PHP. Dette er noget jeg har lovet at lave for min mor, og vil bare have det til at virke. Jeg ved hvad problemet er og jeg ved, at det kun er ganske lidt der skal ændres for at det virker!
Here it goes:
<br />
<?php
require_once('connect.php');
$modtager_email = xxxxx;
$emne = 'Bestilling af bøger';
if(isset($_POST['order']))
{
$besked = '';
$besked .= 'Navn : ' . $_POST['navn'] . "\r\n";
$besked .= 'skole : ' . $_POST['skole'] . "\r\n";
$besked .= 'ean : ' . $_POST['ean'] . "\r\n";
$besked .= 'adresse1 : ' . $_POST['adresse1'] . "\r\n";
$besked .= 'adresse2 : ' . $_POST['adresse2'] . "\r\n";
$besked .= 'bynavn : ' . $_POST['bynavn'] . "\r\n";
$besked .= 'telefon : ' . $_POST['telefon'] . "\r\n";
if(isset($_POST['klasse17']))
{
$besked .= 'Ønsker info om nyheder 1.-7. klasse' . "\r\n";
}
if(isset($_POST['klasse810']))
{
$besked .= 'Ønsker info om nyheder 8.-10. klasse' . "\r\n";
}
$besked .= 'email : ' . $_POST['email'] . "\r\n\r\n";
$besked .= '--==BESTILLING==--' . "\r\n\r\n";
foreach($antal AS $id => $antal)
{
if(isset($id) && is_numeric($id) && isset($antal) && is_numeric($antal))
{
$sql_id = intval($id);
$sql_antal = intval($antal);
$query = mysql_query("SELECT titel, pris FROM bog WHERE id = '".$sql_id."' LIMIT 1");
if(mysql_num_rows($query)==1)
{
$row = mysql_fetch_assoc($query);
$besked .= 'Bog: ' . html_entity_decode($row['titel']) . "\r\n";
$besked .= 'Pris: ' . $row['pris'] . "\r\n";
$besked .= 'Antal: ' . $sql_antal . "\r\n\r\n";
}
else
{
echo 'Der opstod en fejl';
}
}
}
$headers = 'From: xxxxxxxxxxxx. "\r\n" .
'Reply-To: xxxxxxxx. "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($modtager_email, $emne, $besked, $headers))
{
echo '<h3>Din bestilling er afsendt</h3>';
}
else
{
echo '<h5>Email fejlede</h5>';
}
}
//Vi trækker kategorier ud
$query_kat = mysql_query('SELECT id, kategori FROM bog_kategori ORDER BY id');
if(mysql_num_rows($query_kat)>0)
{
echo '<form action="bestilling.php" method="post">'."\r\n";
echo '<table style="width: 420px;">'."\r\n";
while($row_kat = mysql_fetch_assoc($query_kat))
{
echo '<tr><td colspan="3"><h3>' . $row_kat['kategori'] . '</h3 ></td></tr>'."\r\n";
echo '<tr ><td><b>Titel</b></td><td><b>Pris excl. moms</b></td><td><b>Antal</b></td></tr>'."\r\n";
//Vi trækker bøger ud i den pågældende kategori
$query_bog = mysql_query("SELECT id, titel, pris FROM bog WHERE kategori = '".$row_kat['id']."' ORDER BY titel");
if(mysql_num_rows($query_bog)>0)
{
while($row_bog = mysql_fetch_assoc($query_bog))
{
echo '<tr><td>' . $row_bog['titel'] . '</td><td>' . $row_bog['pris'] . '</td><td><input type="text" name="antal[' . $row_bog['id'] . ']" size="4" maxlength="3" /></td></tr>'."\r\n";
}
}
else
{
echo '<tr><td colspan="3">Ingen bøger i denne kategori!</td></tr>'."\r\n";
}
}
echo '</table>'."\r\n";
echo '<table style="background: #c7dfe7 ; width: 410px;">'."\r\n";
echo ''."\r\n";
echo '<tr><td colspan="3"><h2>Forsendelse</h2></td></tr>'."\r\n";
echo '<tr><td>Navn:</td><td><input type="text" name="navn" /></td></tr>'."\r\n";
echo '<tr><td>Skole:</td><td><input type="text" name="skole" /></td></tr>'."\r\n";
echo '<tr><td>EAN-Lokationsnummer:</td><td><input type="text" name="ean" /></td></tr>'."\r\n";
echo '<tr><td>Adresse 1:</td><td><input type="text" name="adresse1" /></td></tr>'."\r\n";
echo '<tr><td>Adresse 2:</td><td><input type="text" name="adresse2" /></td></tr>'."\r\n";
echo '<tr><td>Postnummer:</td><td><input type="text" name="post" /></td></tr>'."\r\n";
echo '<tr><td>By:</td><td><input type="text" name="bynavn" /></td></tr>'."\r\n";
echo '<tr><td>Land:</td><td><input type="text" name="land" /></td></tr>'."\r\n";
echo '<tr><td>Telefon:</td><td><input type="text" name="telefon" /></td></tr>'."\r\n";
echo '<tr><td colspan="2">Ønsker info om nyheder 1.-7. klasse <input type="checkbox" name="klasse17" /></td></tr>'."\r\n";
echo '<tr><td colspan="2">Ønsker info om nyheder 8.-10. klasse <input type="checkbox" name="klasse810" /></td></tr>'."\r\n";
echo '<tr><td>Email:</td><td><input type="text" name="email" /></td></tr>'."\r\n";
echo '<tr><td colspan="2"><input type="submit" name="order" value="Send bestilling" /></td></tr>'."\r\n";
echo '</table>'."\r\n";
echo '</form>'."\r\n";
}
else
{
echo 'Fejl i systemet'."\r\n";
}
?>
_________________
Problemet er dette:
Efter jeg har skiftet server når "bestillings-delen" af min formular ikke frem til e-mailen. Løsningen er denne:
<torbenTrold> sagen er den, at denne form virkede før jeg skiftede server
<torbenTrold> jeg har ikke ændret en eneste linje kode, men nu virker den sidste del af formen pludselig ikke
<@KasperTSW> ah :)
<@KasperTSW> det er fordi det ikke er pænt at hive $id ind på den måde, torbenTrold
<@KasperTSW> hvis det kommer fra en POST formular, bør du bruge $_POST['id']
<@KasperTSW> du kan evt. bare lave en $id variabel i toppen af dokumentet og tage den der fra
<@KasperTSW> Grunden til at det pludselig ikke virker er nok at den nye server kører med lidt strengere indstillinger, hvilket er en god ting, da den måde du gør det på med $id KAN være et sikkerhedsmæssigt problem :)
Så altså: Der er en lille ting der skal ændres, men jeg kan ikke finde ud af det. Vil bare have denne her sag ud af verden. Ved godt det ikke er i ekspertens "ånd" at bare få lavet noget for sig, men jeg håber nu alligevel at en vil hjælpe mig! Altså Paste den kode der gør at det virker!
Derfor giver jeg også 200 point for denne forholdsvist lille opgave.
På forhånd tak
