Autor Zpráva
senior
Profil
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
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
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
senior:
include()?
Mastodont
Profil
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
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; ?>
a stránku som vložil do kódu PHP
<?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
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
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";
musia byť? Nemali by tam byť závorky takto
include ("form-error.php");
alebo takto
include (form-error.php);
Ďakujem za odpoveď.
AM_
Profil
ř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!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0