[ Rektor @ 11.11.2007. 13:53 ] @
Jedna obicna HTML stranica skuplja podatke i prosledjuje ih ka "sendmail.php" stranici. Problem je sto na html stranici imam jedan multiple select koji naravno salje array ali nikako ne mogu da parsiram taj array kada ga preuzmem preko $_POST. Iskomentarisao sam pri dnu linije koda koje salju mail a stavio sam echo samo da vidim da li formira poruku dobro.
Jel moze neko da kaze sta nije u redu.

Evo kako izgleda sendmail.php

Code:


<?php
if (!isset($_POST['submit']) || $_SERVER['REQUEST_METHOD'] != "POST") {
    exit("<p>Niste kliknuli na dugme Posalji narudzbenicu</p>");
} else {
    $exploits = "/(content-type|bcc:|cc:|document.cookie|onclick|onload|javascript|alert)/i";
    $profanity = "/(beastial|bestial|blowjob|clit|cock|cum|cunilingus|cunillingus|cunnilingus|cunt|ejaculate|fag|felatio|fellatio|fuck|fuk|fuks|gangbang|gangbanged|gangbangs|hotsex|jism|jiz|kock|kondum|kum|kunilingus|orgasim|orgasims|orgasm|orgasms|phonesex|phuk|phuq|porn|pussies|pussy|spunk|xxx)/i";
    $spamwords = "/(viagra|phentermine|tramadol|adipex|advai|alprazolam|ambien|ambian|amoxicillin|antivert|blackjack|backgammon|texas|holdem|poker|carisoprodol|ciara|ciprofloxacin|debt|dating|porn)/i";
    $bots = "/(Indy|Blaiz|Java|libwww-perl|Python|OutfoxBot|User-Agent|PycURL|AlphaServer)/i";

    if (preg_match($bots, $_SERVER['HTTP_USER_AGENT'])) {
        exit("<p>Spam botovima nije dozvoljeno slanje.</p>");
    }
    foreach ($_POST as $key => $value) {
        $value = trim($value);

        if (empty($value)) {
            exit("<p>Prazna polja nisu dozvoljena.</p>");
        } elseif (preg_match($exploits, $value)) {
            exit("<p>Malicioznim skriptama nije dozvoljeno slanje.</p>");
        } elseif (preg_match($profanity, $value) || preg_match($spamwords, $value)) {
            exit("<p>Nekim recima nije dozvoljeno slanje.</p>");
        }

        $_POST[$key] = stripslashes(strip_tags($value));
    }

    if (!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,6})$",strtolower($_POST['email']))) {
        exit("<p>Email adresa nije validna.</p>");
    }

    $recipient = "OVDE UBACI EMAIL";
    $subject = "Naruzbenica";

    $message = "Primili ste narudzbenicu od: <br/>";
    $message .= "------------------------------------------ <br /> <br />";
    $message .= "Ime i Prezime: {$_POST['imeIPrezime']}  <br/>";
    $message .= "Ulica i broj: {$_POST['ulicaIBroj']}  <br/>";
    $message .= "Postanski broj i grad: {$_POST['postaIGrad']}  <br/>";
    $message .= "Broj telefona: {$_POST['brojTelefona']}  <br/>";
    $message .= "Email: {$_POST['email']}  <br/>";
    $message .= "Komentar ili promo kod: {$_POST['komentar']}  <br/>";
    
    $message .= "Naruceni parfemi: <br /> <br />";
    $parfem = $_POST['parfemi'];
    foreach($parfem as $p)     [red][b]OVO NECE DA RADI[/b][/red]
   {
        $message .= $p ."<br />";
   }

    $headers = "From: IME VASEG SAJTA <$recipient> \n";
    $headers .= "Reply-To: <{$_POST['email']}>";

    //if (mail($recipient,$subject,$message,$headers)) {
//        echo "<p>Thank you! Your mail was successfully sent to the webmaster. Thank you for your time.</p>";
    //} else {
//        echo "<p>Sorry, there was an error and your mail was not sent. Please find an alternative method of contacting the webmaster.</p>";
//    }

    echo($message);
}
?>


Nemanja Avramović: Kod u code tagove!

[Ovu poruku je menjao Nemanja Avramović dana 11.11.2007. u 16:33 GMT+1]
[ Nemanja Avramović @ 11.11.2007. 15:35 ] @
Proveri da li u POST nizu uopšte dobijaš prosleđene promenljive iz multiple select-a - print_r($_POST);

Takođe, daj nam html kod stranice koja šalje podatke na sendmail.php
[ Rektor @ 11.11.2007. 16:04 ] @
Kada napravim jednostavan php skript koji vadi samo podatke iz multiple selecta onda mi prikaze sve super:
Ovaj kod radi:
Code:

<?PHP
$parfemi = $_POST['parfemi'];      
foreach ($parfemi as $p)
    {
        echo $p . "<br/>";
    } 
?>

Ne znam zasto to isto nece da radi i u onom celom primeru.



A evo ga i html kod, kao sto se vidi nista specijalno.

Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Narudzbenica</title>
</head>

<body>
    <form method="post" action="http://localhost/php.php">
    <table border="2" cellpadding="2" cellspacing="2">
    <tr>
        <td>*Ime i Prezime:</td><td><input type="text" name="imeIPrezime" width="250" /></td>
    </tr>
    <tr>
        <td >*Ulica i broj:</td><td><input type="text" name="ulicaIBroj" width="250" /></td>
    </tr>
    <tr>
        <td>*Postanski broj i Grad:</td><td><input type="text" name="postaIGrad" width="250" /></td>
    </tr>
    <tr>
        <td>*Broj telefona:</td><td><input type="text" name="brojTelefona" width="250" /></td>
    </tr>
    <tr>
        <td>*Email:</td><td><input type="text" name="email" width="250" /></td>
    </tr>
    <tr>
        <td>Komentar ili Promo kod:</td><td><textarea name="komentar" cols="39" rows="4" id="komentar"></textarea></td>
    </tr>
    <tr>
        <td>Izaberite parfem:<br />(drzite CTRL vecu selekciju)</td>
                          <td>
                          <select multiple="multiple" name="parfemi[]" id="parfemi" size="17" >
                                                             <option value="muski">MUSKI PARFEMI:</option>                                 <option value="43">Hugo Boss</option>
             <option value="51">Davidoff</option>                                     <option value="01">Cool Water - Davidoff</option>
             <option value="04">Escada Signature - Escada</option>
        </select></td>
    </tr>
    <tr>
        <td align="center"><input type="reset" name="Ponisti" value="Ocisti narudzbenicu" /></td>
        <td align="center"><input type="submit" name="submit" value="Posalji narudzbenicu" /></td>
    </table>
    
    </form>
</body>
</html>
[ Miroslav Ćurčić @ 12.11.2007. 08:59 ] @
U ovom redu: $_POST[$key] = stripslashes(strip_tags($value));
ćeš pogubiti sve parfeme kad $key stigne do njih jer će konvertovati array u string.

Ako nije to onda nam pajstuj poruku tog "exception"-a.
[ Rektor @ 12.11.2007. 11:30 ] @
mVeliki, kad sam malopre video odgovor pomislio sam u sebi da sam to vec probao i da iz nekog razloga nije to. A onda sam probao ponovo i BILO je to. Izgleda da sam editovao i stavio komentar na linije koda u skripti koja mi je na desktopu a onu koju sam stavio root je stajala nepromenjena.

U svakom slucaju da mi nisi rekao ne bih nikada probao ponovo. Hvala tebi i hvala svim ostalim ljudima. Pozz.