Autor Zpráva
ladik
Profil *
CAU lidi.Mám problém.Mám formulář na odeslání e-mailu s přílohou....chtěl jsem do toho zabudovat aby se musel ještě opsat kód (proti SPAM robotům) a pak až šel odeslat e-mail.....no ale ono mi to ten e-mail odešle a řekne že je kód špatný nebo že je správný.....prosím pomoc jak to udělat aby to ten e-mail v případě špatného kódu neodeslalo.Zde jsou zdroje nekolika souboru ktery k tomu mam.....

1. index.php
<html>
<head>
<title>Odeslání přílohy</title>
<meta http-equiv=Content-Type content="text/html; charset=windows-1250">
</head>
<body style="background-color:white; color:black">


<form enctype="multipart/form-data" method="post" action="mailer.php">
<table style="background-color:gainsboro; color:black; font:normal 11px Arial" border="0">

<tr>
<td align="center" colspan="2">
<b>Odeslání přílohy</b></td>
</tr>

<tr><td >Jméno:</td><td><input name="Jmeno" type="text" style="width:150px;"></td></tr>
<tr><td >Email:</td><td><input name="Odesilatel" type="text" style="width:150px;"></td></tr>

<tr><td>Text:</td><td><textarea name="Text" cols="20" rows="2" style="width:150px;"></textarea></td></tr>

<tr>
<td align="center" colspan="2">

<!-- ---------------------------------------------------- -->
<!-- ---------------------------------------------------- -->
<p style="text-align:justify">Max.velikost přílohy 50000 bajtů.</p>
<!-- ---------------------------------------------------- -->
<!-- ---------------------------------------------------- -->

</td>
</tr>

<tr>
<td align="left" colspan="2">
<input type="hidden" name="MAX_FILE_SIZE" value="50000">
<input name="fileatt" type="file" size="10">
</td>
</tr>
<tr>
<td align="center" colspan="2">
<img src="generateimage.php"><br>
Kontrolní kód: <input name="kkod_input" type="text" value="" size="6"></td></tr>
<tr>
<td align="center" colspan="2"><input name="submitter" xtype="button" type="submit" value="Odeslat"></td>
</tr>

</table>
</form>

</body>
</html>

2. mailer.php
<html>
<head>
<title>Odeslání přílohy</title>
<meta http-equiv=Content-Type content="text/html; charset=windows-1250">
<meta http-equiv="Content-Language" content="cs">
</head>
<body style="background-color:white; color:black">
<?php

///////////////////// MAXIMÁLNÍ VELIKOST PŘÍLOHY. UPRAVTE TÉŽ V index.html
$max_att = 50000;
/////////////////////// ZADEJTE SVŮJ EMAIL ZDE ///////////////////
$to = 'EMAIL@EMAIL.CZ';
//////////////////////////////////////////////////////////////////

$charset = 'windows-1250';
if(!isset($_POST['submitter'])) exit('<h1>Error 1</h1>');
$subject = 'Priloha z webu';
$from = $_POST['Odesilatel'];

$message .= 'Odesláno ze stránky: ' . $_SERVER['HTTP_REFERER'] . "\r\n";
while (list($name, $value) = each($_POST)) {
if ($name == 'MAX_FILE_SIZE' || $name == 'charset' || $name == 'submitter') {
}
elseif (gettype($value) == 'array') { // TAG SELECT MULTIPLE
$cnt = count($value);
for ($i=0; $i < $cnt; $i++) {
$message .= "$name: $value[$i]r\\n";
}
}
else { // OSTATNÍ ELEMENTY
$message .= "$name: $value\r\n";
}
}
$valid = 1;
$file_size = $_FILES['fileatt']['size'];
$file_name = $_FILES['fileatt']['name'];
$file_type = $_FILES['fileatt']['type'];
if ($file_size > 0) $att_present = true;
$message .= "VELIKOST PŘÍLOHY: $file_size bytes\r\n\n";
if($att_present) {

if($file_size > $max_att) {
$valid = 0;
$err_msg .= "<p>Příloha je větší nežli povolených $max_att bajtů";
}

if (
$file_type != 'text/plain' // TXT
&& $file_type != 'text/html' // HTM
&& $file_type != 'text/html' // HTML
&& $file_type != 'image/gif' // GIF
&& $file_type != 'image/jpeg' // JPG JPEG
&& $file_type != 'image/pjpeg' // JPG JPEG
&& $file_type != 'image/png' // PNG
&& $file_type != 'image/x-icon' // ICO
&& $file_type != 'application/msword' // DOC
&& $file_type != 'application/excel' // XLS
&& $file_type != 'application/rtf' // RTF
&& $file_type != 'application/octet-stream' // DOC
&& $file_type != 'application/x-zip-compressed' // ZIP
&& $file_type != 'application/pdf'
) { // PDF
$valid = 0;
$err_msg .= "<p>Skript nepodporuje tento typ souboru $file_type";
}

$dots = substr_count($file_name,'.');
if($dots != 1) {
$valid = 0;
$err_msg .= "<p>Příloha má nepovolený počet extenzí $dots";
}

$extension = strtolower(strstr($file_name,'.'));
if (
$extension != ".txt"
&& $extension != ".htm"
&& $extension != ".html"
&& $extension != ".gif"
&& $extension != ".jpg"
&& $extension != ".jpeg"
&& $extension != ".png"
&& $extension != ".ico"
&& $extension != ".doc"
&& $extension != ".xls"
&& $extension != ".rtf"
&& $extension != ".zip"
&& $extension != ".pdf"
) {
$valid = 0;
$err_msg .= "<p>Skript nepodporuje extenzi $extension";
}

$p = strlen($extension);
if($p != 4 && $p != 5) {
$valid = 0;
$err_msg .= "<p>Příloha má neplatnou délku extenze $p";
}

if($valid == 1){
$fileatt = $_FILES['fileatt']['tmp_name'];
$headers = "From: $from";
if(is_uploaded_file($fileatt)) {
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=$chrset\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
$data = chunk_split(base64_encode($data));
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$file_type};\n" .
" name=\"{$file_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}--\n";
}
$message = StripSlashes($message);
$sent = @mail($to, $subject, $message, $headers);
if($sent) echo "<h1>Formulář byl úspěšně odeslán</h1>";
else echo "<h1>Formulář se nezdařilo odeslat</h1>";
}
if($valid!==1) {
echo "<h2>Chyba...</h2>$err_msg";
echo "<p>Klikněte na Zpět a zkuste znovu";
}
}
else { // není příloha
$message = StripSlashes($message);
$sent = @mail($to, $subject, $message, $headers);
if($sent) echo "<h1>Formulář byl úspěšně odeslán</h1>";
else echo "<h1>Formulář se nezdařilo odeslat</h1>";
}

session_start();
$submitter = $_POST['submitter'];
$kkod_input = trim($_POST['kkod_input']);
$kkod_input = strtolower($kkod_input);
$kkod_session = $_SESSION['kkod_session'];
$kkod_session = strtolower($kkod_session);

if(isset($submitter)) {
if ($kkod_session != $kkod_input) {
echo "<p>Špatne jste opsal/a kontrolní kód z obrázku.";
echo "<br>Obrázek: $kkod_session Text: $kkod_input";
}
else {
echo "<p>Kontrolní kód je v pořádku.";
ladik
Profil *
pokracovani:
}
}

?>
</body>
</html>

3. generateimage.php
<?php
session_start();
include('config.php');

$kkod_session = '';
for ($i = 0; $i < $pocet_znaku; $i++) $kkod_session .= nahodny_znak();
$_SESSION['kkod_session'] = $kkod_session;

$im = ImageCreate(86,31);
$barva_font = ImageColorAllocate($im,255,255, 0);
$barva_bkg = ImageColorAllocate($im, 0, 0,255);
ImageFill($im,0,0,$barva_bkg);
ImageString($im,5,20,8,$kkod_session,$barva_font);

header("Content-type: image/jpeg");
ImageJPEG($im);
ImageDestroy($im);

function nahodny_znak() {
$chyba = true;
while($chyba == true) {
mt_srand((double)microtime()*1000000);
switch (mt_rand(1,3)) {
case 1:
$znak = mt_rand(48, 57);
break;
case 2:
$znak = mt_rand(65, 90);
break;
case 3:
$znak = mt_rand(97, 122);
break;
}
$x = chr($znak);
$chyba = ereg("[oO0QqSsGg561iIlL]",$x);
}
return chr($znak);
}
?>

4. config.php
<?php
//// Upravte podle potřeby
$pocet_znaku = 5; // kolik znaků v kódu
?>

PONEKUD DLOUHEJ DOTAZ ALE PROSIM O POMOC mozna by bylo lepsi to vyresit po ICQ nebo po e-mailu tak kdyztak sem napiste Vas e-mail nebo ICQ a ja se Vam ozvu a poresime to.....predem diky....
souki
Profil
if(isset($submitter)) {
if ($kkod_session != $kkod_input) {
echo "<p>Špatne jste opsal/a kontrolní kód z obrázku.";
echo "<br>Obrázek: $kkod_session Text: $kkod_input";
}
else {
echo "<p>Kontrolní kód je v pořádku.";
}
}

// sem musíš přesunout odesílání mailu... máš to tam jako @mail( a tak dále...
ladik
Profil *
souki
Já vím že to je potřeba přesunout pod to nějak ale v PHP toho moc neumím a tyhle skripty sem našel na netu tak sem je skloubil no a vyšlo z toho co vyšlo.....nebyl by jsi tak hodnej a nenapsal mi ten kus skriptu....prosím.....já sem to nějak skusil no a vyšlo z toho ERROR :-( .....předem dík
ladik
Profil *
juchuuuu......ja jsem to vyřešil....a už to nehází ERROR.....díky souki ze si se ozval.....koukalo na to tu lidi jak moc a nikdo neporadil....diky....funguje to tak jak chci jen to i pri spravnym kodu pise ze nebyl odeslan ale ve skutecnosti byl....no ale to uz si poladim...to uz zvladnu.....tak se tu mejte lidi hezky a diky souki
Hugo
Profil
koukalo na to tu lidi jak moc a nikdo neporadil

Ono totiz, kdyz sem narves tri stranky kodu, tak nemuzes cekat, ze budou mit lidi cas to lustit. Kod je potreba zredukovat na par radku, kterych se tyka dotaz. Pak mas realnou sanci na rychlou odpoved.
ladik
Profil *
neumím a tyhle skripty sem našel na netu

Myslis si ze já vim kterych radku se dotaz tyka ???
Hugo
Profil
ladik

Tak se pak nediv, ze na odpoved musis cekat dlouho.
ladik
Profil *
Hugo

Ja nevim proc resis takovou kravinu.
Hugo
Profil
Mam dost volneho casu :-).

Ona to zas takova kravina neni. Spousta lidi tu zbytecne zaplacava forum 10kB skripty, ktere stejne skoro nikdo nema cas ani chut studovat, ono totiz najit chybu na 200 radcich zabere dost casu. Tak treba si to par lidi precte a pak se vystrihaji takovych prasaren.
ladik
Profil *
Tak se teda hluboce omlouvám že sem to tu zaplácal 10kB skriptem.....ale mam ještě jeden tentokrat zredukovanej dotaz.Jak přidám další typ souboru, který bude možno poslat jako přílohu? Když bych chtěl .rar archiv jak ho zapsat ?
.zip se zapisuje takhle
&& $file_type != 'application/x-zip-compressed'
na .rar jsem skusil tohle
&& $file_type != 'application/x-rar-compressed'
to nefunguje tak mi prosím poraďte někdo
Toto téma je uzamčeno. Odpověď nelze zaslat.