| Autor | Zpráva | ||
|---|---|---|---|
| Shackar Profil |
#1 · Zasláno: 30. 7. 2013, 19:42:00
Dobrý deň,
hľadám niekoho, kto sa učil s knihy Programování www stránek pro úplné začátečníky - Martin Mikuľák a fungujú mu kódy z 5. kapitoly. Učím sa z nej, ale nefunguje mi obsah 5. kapitoly, v ktorom sa rieši dynamický obsah načítaný z databázy. A aj presne skripty na stiahnutie sú chybné, takže ja asi chybu nerobím. Vypisuje mi nasledovné chyby: Notice: Undefined index: page in C:\xampp\htdocs\kniha\ts\priprav-obsah.php on line 3 Notice: Undefined index: page in C:\xampp\htdocs\kniha\ts\index.php on line 39 Notice: Undefined index: jmeno in C:\xampp\htdocs\kniha\ts\kontakt.php on line 2 Vytvoril som si databázu v phpmyadmine a tu sú kódy aplikácie: priprav-obsah.php : <?php
require "pripojeni.php";
$php=trim(htmlspecialchars(strip_tags($_GET['page'])));
if ($php=="") {
$php="index";
};
$dotaz='SELECT * FROM texty WHERE urlnazev="' .$php. '"';
$vysledek=mysql_query($dotaz);
$zaznam=mysql_fetch_array($vysledek);
if($zaznam['nazev']!="") {
$nazev=$zaznam['nazev'];
$text=$zaznam['text'];
$klicovaslova=$zaznam['klicovaslova'];
$title=$zaznam['nazev'].' | Programování WWW stránek pro začátečníky';
$metapopis=$zaznam['metapopis'];
};
?>pripojeni.php : <?php
$host='localhost';
$uzivatel='root';
$heslo='';
$databaze='dynamicka databaza';
$db = mysql_connect($host, $uzivatel, $heslo) or die('Neda se pripojit k serveru.');
mysql_select_db($databaze ,$db) or die(mysql_error($db));
mysql_query('SET NAMES UTF8');
mysql_query('SET COLLATION_CONNECTION=utf8_czech_ci');
?>index.php : <?php
session_start();
require "priprav-obsah.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $title; ?></title>
<style type="text/css" media="all">@import "css/style.css";</style>
<link rel="shortcut icon" href="images/favicon.ico" />
<meta name="robots" content="index,follow" />
<meta name="description" content="<?php echo $metapopis; ?>" />
<meta name="keywords" content="<?php echo $klicovaslova; ?>" />
</head>
<body>
<div id="obalStranky">
<div id="hlavicka">
<div id="logo">
<a href="index.php" /><img src="obrazky/logo.png" /></a>
</div>
<div id="nadpisy">
<h1>Programování WWW stránek pro úplné začátečníky</h1>
<h2>...a statické stránky se změní na dynamické</h2>
</div>
</div>
<div id="stred">
<div id="levySloupec">
<div id="menu">
<a href="index.php"><div class="menuLink">Domov</div></a>
<a href="index.php?page=o-nas"><div class="menuLink">O nás</div></a>
<a href="index.php?page=kontakt"><div class="menuLink">Kontakt</div></a>
</div>
</div>
<div id="obsah">
<h3><?php echo $nazev; ?></h3>
<p><?php echo $text; ?></p>
<?php
if($_GET['page']=="kontakt"){
require "kontakt.php";
};
?>
</div>
<div style="clear:both;"></div>
</div>
<div id="paticka">
Ukázka ke knize: <strong>Programování WWW stránek pro úplné začátečníky</strong>
</div>
</div>
</body>
</html>kontakt.php : <?php
$jmeno=trim(htmlspecialchars(strip_tags($_POST['jmeno'])));
$telefon=trim(htmlspecialchars(strip_tags($_POST['telefon'])));
$email=trim(htmlspecialchars(strip_tags($_POST['email'])));
$predmet=trim(htmlspecialchars(strip_tags($_POST['predmet'])));
$zprava=trim(htmlspecialchars(strip_tags($_POST['zprava'])));
if($_POST['poslat']=="ano") {
$chyby=array();
if(empty($jmeno)) { $chyby[]='Vyplňte své jméno.'; }; // $jmeno je prázdné
if(is_numeric($jmeno)) { $chyby[]='Jméno nemůže mít číselnou hodnotu.'; }; // jméno nemůže být číslo
if(strlen($jmeno)<=2) { $chyby[]='Uvedené jméno je moc krátke.'; }; // minimální délka jména je dva znaky
if(empty($telefon) && empty($email)){ // pokud jsou oba údaje nevyplněny
$chyby[]='Uveďte kontaktní telefon nebo emailovou adresu.';
};
if(!empty($telefon)) { // pokud je $telefon vyplněn
$telefon=str_replace('+', '', $telefon); // zmažeme nečíselné znaky
$telefon=str_replace('-', '', $telefon);
$telefon=str_replace('/', '', $telefon);
$telefon=str_replace(' ', '', $telefon); // zmažeme i mezery
if(!is_numeric($telefon)) { // pokud to není číslo, obsahuje nepovolené znaky
$chyby[]='Telefonní kontakt obsahuje nepovolené znaky.';
}
if(strlen($telefon)<9 || strlen($telefon)>15) {
// délku si můžete zvolit sami podle vašeho uvážení
$chyby[]='Telefonní kontakt má nesprávnou délku.';
}
}
if(!empty($email)){ // pokud je vyplněný $email
if(!preg_match('/^[^@]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}+$/', $email)){
// emailová adresa nemá správní tvar
$chyby[]='Uvedená emailová adresa nemá správní tvar.';
}
}
if(empty($predmet)){ $chyby[]='Uveďte předmět vaši zprávy.'; };
if(strlen($predmet)<5){ $chyby[]='Předmět zprávy je příliš krátký.'; };
if(empty($zprava)){ $chyby[]='Napište vaši zprávu.'; };
if(strlen($zprava)<20){ $chyby[]='Zpráva je příliš krátká. Zkuste ji popsat podrobněji.'; };
$chyba=join('<br />', $chyby);
if(!empty($chyba)){
echo '<div class="chybovaHlaska">'.$chyba.'</div>';
};
if(empty($chyba)){ // všechna jsou v pořádku
$textZpravy='Odesílatel: <strong>'.$jmeno.'</strong><br /><br />
[ '.$email.' '.$telefon.' ]<br /><br />
'.$zprava;
require "class.phpmailer.php";
require "class.smtp.php";
$Mail = new PHPMailer();
$Mail->CharSet = 'UTF-8';
;
$Mail->IsSMTP();
$Mail->Host = "smtp.googlemail.com";
$Mail->Username="prihlasovaci.jmeno.k.emailu";
$Mail->Password="heslo";
$Mail->SMTPAuth=true;
$Mail->From = "prihlasovaci.jmeno.k.emailu@gmail.com";
$Mail->FromName = $jmeno;
$Mail->AddAddress("prihlasovaci.jmeno.k.emailu@gmail.com");
if($_POST['kopie']=="on") {
$Mail->AddBCC($email);
}
$Mail->IsHTML(true);
$Mail->Subject = $predmet;
$Mail->Body = $textZpravy;
$cistyText=strip_tags($textZpravy);
$Mail->AltBody=$cistyText;
if($Mail->Send()) {
$okHlaska="Zpráva byla úspěšne odesláná.";
} else {
echo "Zprávu se nepodařilo odeslat. Zkuste to znovu.";
}
}
}
if($okHlaska==""){
echo '<form action="" method="post">
<label for="jmeno">Vaše jméno:</label>
<input type="text" name="jmeno" id="jmeno" value="'.$jmeno.'" class="kontaktInput" /><br />
<label for="telefon">Telefon:</label>
<input type="text" name="telefon" id="telefon" value="'.$telefon.'" class="kontaktInput" /><br />
<label for="email">Email:</label>
<input type="text" name="email" id="email" value="'.$email.'" class="kontaktInput" /><br />
<label for="predmet">Předmět:</label>
<input type="text" name="predmet" id="predmet" value="'.$predmet.'" class="kontaktInput" /><br />
<label for="zprava">Zpráva / dotaz:</label>
<textarea name="zprava" id="zprava" rows="3" class="kontaktInput">'.$zprava.'</textarea><br />
<input type="checkbox" name="kopie" id="kopie"';
if($_POST['kopie']=="on"){ echo ' checked="checked"'; };
echo '/><label for="kopie" style="width:350px;">zaslat kopii zprávy na můj
email</label><br />
<input type="submit" value="Odeslat dotaz" />
<input type="hidden" name="poslat" value="ano" />
</form>';
} else {
echo $okHlaska;
}
?> |
||
| Davex Profil |
Hm, na první pohled je to špatná kniha, která učí začátečníky chybné postupy. Proto je asi tak levná.
Třeba v souboru priprav-obsah.php není chyba snad jen na prvních třech řádcích a rychlejší než ho opravovat by asi bylo napsání celého nového a lepšího příkladu, ale do toho se mi teď nechce. Pokud se chceš nějak zbavit jen těch chyb a na estetiku nebo bezpečnost dlabeš, tak si všechna čtení hodnot z polí $_GET nebo $_POST uprav podle vzoru
if (empty($_GET["page"])) {
$php = "";
} else {
$php = trim(htmlspecialchars(strip_tags($_GET['page'])));
} |
||
|
Časová prodleva: 13 let
|
|||
0