| Autor | Zpráva | ||
|---|---|---|---|
| senior Profil |
#1 · Zasláno: 3. 6. 2010, 20:45:34
Príjemný večer, mám PHP scipt:
<?php
///////////////////// MAXIMÁLNÍ VELIKOST PŘÍLOHY. UPRAVTE TÉŽ V index.html
$max_att = 50000;
/////////////////////// ZADEJTE SVŮJ EMAIL ZDE ///////////////////
$to = 'aaa@centrum.sk';
//////////////////////////////////////////////////////////////////
$charset = 'windows-1250';
if(!isset($_POST['submitter'])) exit('<h1>Error 1</h1>');
$subject = 'Fotosutaz';
$from = $_POST['Email'];
$message .= 'Odoslané 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 .= "Velkost prilohy: $file_size bytes\r\n\n";
if($att_present) {
if($file_size > $max_att) {
$valid = 0;
$err_msg .= "<p>Príloha je väčšia ako povolených $max_att bajtov";
}
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 suboru $file_type";
}
$dots = substr_count($file_name,'.');
if($dots != 1) {
$valid = 0;
$err_msg .= "<p>Príloha má nepovolený počet extenzií $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 extenziu $extension";
}
$p = strlen($extension);
if($p != 4 && $p != 5) {
$valid = 0;
$err_msg .= "<p>Príloha má neplatnú dlžku extenzie $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ár bol úspešne odoslaný</h1>";
else echo "<h1>Formulár sa nepodarilo odoslať</h1>";
}
if($valid!==1) {
echo "<h2>Chyba...</h2>$err_msg";
echo "<p>Kliknite na späť a skúste znova";
}
}
else { // není příloha
$message = StripSlashes($message);
$sent = @mail($to, $subject, $message, $headers);
if($sent) echo "<h1>Formulár bol úspešne odoslaný</h1>";
else echo "<h1>Formulár sa nepodarilo odoslať</h1>";
}
?>
kde by som potreboval nahradiť echo normalnou HTML stránkou. Vie mi prosím niekto poradiť? V PHP som začiatočník - ešte sa ho iba učím. Ďakujem za každú radu. |
||
| ShiraNai7 Profil |
#2 · Zasláno: 3. 6. 2010, 23:10:03 · Upravil/a: ShiraNai7
Před a za <?php ?> můžeš dát jakýkoliv výstup, třeba právě strukturu HTML stránky. Nebo co přesně potřebuješ?
|
||
| senior Profil |
#3 · Zasláno: 4. 6. 2010, 07:15:37
ShiraNai7:
To mi je jasné, ale ja by som potreboval aby výstup z PHP scriptu, napr. echo "<h1>Formulár sa nepodarilo odoslať</h1>"; sa dal nahradiť stránkou (HTML alebo PHP). Ďakujem. |
||
| panther Profil |
#4 · Zasláno: 4. 6. 2010, 09:54:43
senior:
include()? |
||
| Mastodont Profil |
#5 · Zasláno: 4. 6. 2010, 10:38:38
senior:
Udělej si HTML stránku, do ní v potřebných místech vlož <?php echo $nazev_promenne ; ?> a v kódu PHP pak postupně naplň jednotlivé proměnné a nakonec includuj tu HTML stránku. Složitěji to je popsáno na http://www.massassi.com/php/articles/template_engines/ |
||
| senior Profil |
#6 · Zasláno: 4. 6. 2010, 16:30:53 · Upravil/a: senior
Mastodont:
Ďakujem za pomoc. Ak som to správne pochopil, tak som to vyskúšal na PHP kóde, ale neviem, či som to urobil správne. Vytvoril som php stránku form-error.php, do ktorej som vložil <?php echo $kon; ?> <?php
function autoUTF($s)
{
// detect UTF-8
if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
return $s;
// detect WINDOWS-1250
if (preg_match('#[\x7F-\x9F\xBC]#', $s))
return iconv('WINDOWS-1250', 'UTF-8', $s);
// assume ISO-8859-2
return iconv('ISO-8859-2', 'UTF-8', $s);
}
function cs_mail ($to, $subject, $message, $head = "")
{ $subject = "=?utf-8?B?".base64_encode(autoUTF ($subject))."?=";
$head .= "MIME-Version: 1.0\n";
$head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
$head .= "Content-Transfer-Encoding: base64\n";
$message = base64_encode (autoUTF ($message));
return mail ($to, $subject, $message, $head);
}
// ******************************************************************************************
$ignoreElements = array("redirect", "submit", "robot"); // Polia z formulara, ktore budu ignorovane
$recipents = array("club@centrum.sk"); // Email adresy, na ktore bude formular odoslany. V
uvodzovkach, oddelene ciarkami.
$from = $_POST['Email']; // Odosielatel
$to = implode(", ", $recipents);
$subject = $_POST['Result'];
$message = "";
foreach ($_POST as $key=>$value){
if (($value !="") && (!in_array($key, $ignoreElements))){
$message .= "\n".$key.": ".$value;
}
}
$message .= "\nIP: ".$_SERVER['REMOTE_ADDR'];
$message .= "\nHTTP: ".$_SERVER['HTTP_REFERER'];
$message .= "\nPROVIDER: ".gethostbyaddr($_SERVER['REMOTE_ADDR']);
$message .= "\nBROWSER: ".$_SERVER ['HTTP_USER_AGENT'];
$message .= "\nDATUM: ".date('d.m.Y, H:i');
$kon = cs_mail ($to, $subject, $message, "From: $from\n");
if ($kon) {
header("location: ".$_POST[redirect]);
} else {
echo(<?php include ("form-error.php") ?>); //povodne tam bolo: echo("CHYBA: Nepodarilo sa odoslat formular. Skuste znova.");
}
?>
Skúsil som to na PHP kóde s 1 premennou, aby som ľahšie našiel chybu. Mám to správne? Mám pocit, že tam ešte niečo chýba. |
||
| SpotRudloff Profil |
#7 · Zasláno: 4. 6. 2010, 17:12:21 · Upravil/a: SpotRudloff
senior:
} else {
echo(<?php include ("form-error.php") ?>); //povodne tam bolo: echo("CHYBA: Nepodarilo sa odoslat formular. Skuste znova.");
} Panebože, co to je?! Jak můžeš v PHP kódu začít znovu PHP značkami? Udělej to takto: } else {
include "form_error.php"; //povodne tam bolo: echo("CHYBA: Nepodarilo sa odoslat formular. Skuste znova.");
} A pojede to OK. |
||
| senior Profil |
#8 · Zasláno: 4. 6. 2010, 17:43:31 · Upravil/a: senior
SpotRudloff:
Vďaka za pomoc. Darmo sa nehovori: "Když jsi blbej tak se ptej!". Ešte malý dotaz: Tie jedny úvodzovky v kóde include form-error.php"; include ("form-error.php");include (form-error.php); |
||
| AM_ Profil |
#9 · Zasláno: 4. 6. 2010, 23:40:20
řetězce se vkládají do uvozovek, takže uvozovky. Závorky musí být akorát okolo parametrů funkcí, ale věci jako include, echo a pár dalších nejsou skutečné funkce, ale klíčová slova jazyka a jejich konstrukce závorky nevyžaduje. UVOZOVKY VŽDY A OKOLO KAŽDÉHO ŘETĚZCE!
|
||
|
Časová prodleva: 15 let
|
|||
0