Návštěvní kniha v PHP s reakcí na příspěvky
Také v novém roce bych rád pokračoval s články v oboru. Mám tu ještě nějaké resty u starších textů, které potřebují revizi. Návštěvní kniha v PHP a MySQL s reakcí na příspěvky byla velmi navštěvovaným článkem, a tak je více než vhodné ji malinko předělat. Začaly se mi tu množit dotazy, proč to nyní nefunguje...
Komentáře k článku:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:Program FilesVertrigoServwwwpagesguestbo-okadminindex.php on line 80Warning: Cannot modify header information - headers already sent by (output started at C:Program FilesVertrigoServwwwpagesguestbo-okadminindex.php:80) in C:Program FilesVertrigoServwwwpagesguestbo-okadminindex.php on line 82ps: a to jsem už v indexu musel opravovat řádky 153 a 154, měl jsi tam `knizka` a má tam být `knizka_2`
Warning: Cannot modify header information - headers already sent by (output started at C:Program FilesVertrigoServwwwincludeheade-r.php:6) in C:Program FilesVertrigoServwwwpagesguestbo-okfunctions.php on line 89
Kuva, už mě to štve ....
mám to includované do souboru kniha-navstev.php a ten soubor vypada takhle:***Je tam něco z odesíláním hlavičky, ale nevím co v PHP se vůbec nevyznám.
PS: Jinak vím že takhle se include nedoporučuje používat, ale furt lepší, než přepisovat v statickym webu hromadu stránek.
OT: Co takhle napsat nějaký slušný mailform, jeden sice
Můžeš napsat co přesně mám z guestbook.php smazat a jak to zapsat do toho souboru ?
require_once dirname(__FILE__).'/config.php';
require_once dirname(__FILE__).'/functions.php';
...a před nimi už nic nebylo. když se třeba podíváš na první verzi mé knihy, soubor guestbook.php začínal řádky před kterými také nesmělo nic být (tedy výstup) postup by tudíž měl být stejný %0# edit : zkus config i fce naincludovat přímo do indexu, anebo zpětně includovat hlavičku / menu / patičku do souboru s knihou (to by bylo možná i lepší)
Díky
prosím tě použil jsem tvoji knížku ale nějak mi nefunguje číslování vzkazů všude je jednička a taky mi nefunguje stránkování u posledního odkaz funguje ale když jsou tam tři a více tak u prostředního mi to na odkaz nehodí nevíš čím by to mohlo být? je to stránka www.sacagawea.cz/guestbook.php
jake to ma naroky na verze PHp a mySQL?
Hazi mi to chybu uz pri instalaci %6:
Nastala chyba: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLLATE utf8_czech_ci, `text` text COLLATE utf8_czech_ci N
Ale stejne si moc nepomuzu. Potrebuju to zakomponovat doprostred sveho webu (ktery je navic cely ve win1250) a to by bylo slozite.
Chtel bych se tedy zeptat, zda bych mohl pouzit (zneuzit) ješn casti tveho kodu pro vlastni tvorbu.Predem dik %0
config.php radek 41:
mysql_query("SET NAMES UTF-8");functions.php radek 38:
$_POST['zprava'] = mb_substr($_POST['zprava'], 0, 1500, 'UTF-8'); # bereme pouze prvnich 1500 znakuinstall.php od radku 19:
# mysql_query("DROP TABLE `knizka_2`");
mysql_query("CREATE TABLE `knizka_2` (
`id` int(10) unsigned NOT NULL auto_increment,
`jmeno` varchar(255) COLLATE utf8_czech_ci,
`text` text COLLATE utf8_czech_ci NOT NULL,
`datum` varchar(255),
`email` varchar(255) COLLATE utf8_czech_ci,
`web` varchar(255) COLLATE utf8_czech_ci,
`addr` varchar(255),
`r` int(11) default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=0 ;")admin/index.php radek 92:
$zprava = mb_substr($_POST['zprava'], 0, 1500, 'UTF-8');
jediný řádek nestačí. vše, co správně uvádíš je nutné změnit na windows-1250 :takže : mysql_query("SET NAMES cp1250");
porovnávání v sloupcích tabulky : COLLATE cp1250_czech_cs
a poslední řádek dotazu CREATE TABLE : "ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs"
funkci mb_substr nahradit : substr($_POST['zprava'], 0, 1500);nakonec meta tagy, a mělo by vše fungovat %1
nevim proc, ale funguje mi tak z 1/2, text v html se zobrazuje dobre v win1250, ale vse co se bere z databaze ne, nemuze to byt tim, ze databaze je v utf-8 a ja jsem provedl upravy na dtabazi win1250, prosim porad mi jak zprovoznit html v win-1250 s databazi UTF-8, asi jsem se predtim nevyjadril jasne, dik.
mysql_query("SET NAMES cp1250");
a ve struktuře tabulky smazat všechna COLLATE a DEFAULT CHARSET. nejdřív ale zkus nastavit kódování db na cp1250 přímo v phpmyadminovi
mysql_query("SET NAMES cp1250");
%2
Testuji to na localu.
<a href="http://localhost/guestbook/rss-guestbook.php">RSS</a>
v configu m=am toto>
http://localhost/guestbook/guestbook.php
Když jdu do booku a dáam rss, všechno je O.K., a ten se mi uloží ve FF, ale když tam něco napíšu, nic se tam neoběví. Tak nevím kde je chyba ?
Funguje toto na localu, nebo funguje RSS, jen na webu a na localu se to nedá testovat???
Díky
to by se mělo "hodit" rovnou na ten komentář, nebo ne. Tohle mi načte jen tvojí stránku, ale na komentář mi to už neskočí.
No a teď k tomu RSS, pořád to nefunguje:
1. máš tam chybu na řádku 20 je tam "knizka" a ma byt "knizka_2"
2. píše mě to toto: RSS Návštěvní kniha Návštěvní Kniha RSS potrava cs http://localhost/guestbook/rss-guestbook.php Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:Program FilesVertrigoServwwwguestbook ss-guestbook.php on line 21
Koukal jsem na ten řádek, ale nerozumím PHP, tak s tím si už neporadím, je tam :
while($row = mysql_fetch_row($vypis)) {
Ještě bych podotkl že tvůj guestbook je includovaný do jiného souboru, tak jestli to nebude tím.
Ve ff i opeře mi RSS prostě nefunguje, byl bych moc rád, kdybys poradil jak na to.
Díky moc.
PS: Tvůj gb2 je fakt NEJLEPŠÍ !!! jen tak dál.
Též vkládání smajlů nefunguje, respektive můžu jich tam vložit kolik chci ???
if (substr_count($_POST['zprava'], '**') > 10) # vice jak 10 smajlu nepovolime
Warning: Cannot modify header information - headers already sent by (output started at C:VertrigoServwww estconfig.php:1) in C:VertrigoServwww estfunctions.php on line 89Nevíte čím to je? Díky moc
tam na naincludovany vzhled a knuhu. ale odakzu se prida jen znam # a formulare zustanou vyplnene nevite cim to bude?
ob_end_flush()
a jeden link tam mam tak to asi dela to
narazil jsem na menší problém.
Text, ve kterém je použit APOSTROF se nezapíše do DB.
Při použití zpětného lomítka vše funguje.
Napadla mě souvislost s javascriptem ale na doladění nemám potřebné znalosti.
Díky za pomoc
1) line64@functions.php - nerozdělí slova oddělená break znakem " ", tabulátorem " ", novým řádkem " " a dalšími "bílými znaky". Jako antispam to potom 100% účinnost mít nebude.2) lines30-37@functions.php - dobrý. Jenom by se tohlecto dalo elegantněji vyřešit iterací nad polem $_POST.3) nikde jsem nezahlídl funkce jak addslashes a spol. Seš si jistej, že tomu nehrozí SQL injection?4) neškodila by optimalizace %5
Internet Explorer cannot open the Internet size http://....../gb2/guestbook.php. Operation abortedPo odkliknuti OK sa ocitnem na ...../gb2/guestbook.php# a nezobrazi sa ziadna stranka. Nasledne ak dam o stranku naspat tak som znova na ...../gb2/guestbook.php a odkaz je tam pridany.Da sa nejak fixnut problem s tou chybovou hlaskou? Napriklad vo firefoxe to funguje v poriadku. %10
Ahoj Miku, už ses k tomu dostal? %5
Díky
Použil jsem funkci
tak doufám, že jsem tím nic nepokazil.
Díky tvoje kniha mi slouží už dlouho a je naprosto SUPER!!! %2
b) máš zaplá php chybová hlášení (tzn. jestli máš chybu ve skriptu, jestli ti ji to vypíše nebo vidíš bílé okno)
c) máš nějaký alternativní přístup do databáze, třeba phpmyadmin? zkoušel ses podívat tam, jestli je příspěvek spřávně uložen?
Chybová hlášení jsou zapnutá. Když něco upravím a udělám chybu tak mi to chybu nahlásí. I když jsem nechal knihu bez úprav tak jak jsem si ji stáhnul z tvého odkazu a pouze si upravil přihlašovací údaje tak je to stejné.
Přes phpmyadmin se podívám do databáze a tam nic nenajdu, příspěvky jako by nebyli., knížka_2 taky není k nalezení.
Teď si přesně nevzpomenu, co mi to v phpmyadmin napsalo, ale něco v tom smyslu, že Easy php, který mám na počítači, pracuje s novější databází než kniha a mohli by nastat problémy. Přesně se na to můžu podívat večer až se dostanu ke svému kompu.
Nastala chyba: Table 'knizka_2' already exists
V phpadminovi v databázi mi to píše, že nejsou žádné databáze.
Jinak v phpadmin mě informuje hláškou:
Používaný MySQL modul v PHP je kompilován pro MySQL 5.0.51a a server používá verzi 5.1.30. Používání různých verzí může způsobit problémy.
Ještě něco vyzkouším a uvidíme. %6
Incorrect integer value: '' for column 'id' at row 1
tak já jen, jestli se toho dá nějak zbavit, php se teprve začínám učit a díky tvýmu zdrojáku už sem toho hodně pochopil.
Diky za super knihu.
mam taky problem neviem ako mam spravit cenzúru mohol by si mi nejak poradit aby neodoslalo príspevky v ktorých sa nachádza neslušné slovo??
najlepsie by bolo keby tie zakazane slova tahalo z databazy
[kod]<?php
include ("prihlaseny.php");$datum = date ("H:i:s");
$od = htmlspecialchars($_POST['od']);
$pre = htmlspecialchars($_POST['pre']);
$text = htmlspecialchars($_POST['text']);
$miestnost = htmlspecialchars($_POST['miestnost']);
$message = array(); // sem budeme ukladat chyby$spamwords = 'tu su tie slova';
$spamwords_array = explode(" ", $spamwords);$zprava_array = explode(" ", str_replace("
", "
", $_POST['text'])); // rozdelime text zpravy na jednotliva slova
$zprava_return = ""; // inicializace - zde pak bude text zpravyfor ($i = 0; $i <= count($zprava_array)-1; $i++) {
if (in_array(mb_strtolower($zprava_array[$i]), $spamwords_array, true)) { // zkontrolujeme kazde slovo
$message[] = "Použili jste některé z nepovolených slov: $spamwords";
}
$zprava_array[$i] = wordwrap($zprava_array[$i], 50, "-", 1); // slova delsi nez 40 znaku rozdelime
$zprava_return .= $zprava_array[$i] . " ";
}// kontrola promenne $message, pokud v ni nic neni, nenastala chyba a muzeme pokracovat dalif ( empty( $_POST['text'] ) ) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: miestnost.php?nazov=$miestnost&pre=");
header(&q-uot;Connection: close");
die ( $mesage_head . $message . $mesage_fo
navstevni kniha se ti moc povedla,ale mam takovou malou prozbu zda by jsi nemohl udelal malou upravu.Po napsani jmena a vyplneni vsech pozadovanych udaju jmeno zmizi.
Prosim o upravu ad tam to jmenu zustane.diky moc
Našla se mi tam chybka. Když vložím dlouhý link, tak by ho to mělo useknout a napsat trojtečku. Ale entita trojtečky se ošetří na Proto doporučuji přidat hellip
Ochranu pomoci kulatých závorek nezvládne např. Thunderbird. Takhle v něm vypadá Příjemce po kliknutí na chráněné linky:Hranaté: vojta[tečka]rylko[uzenáč]seznam[tečka]cz
Kulaté: tečka uzenáč tečka <vojtarylkoseznamcz>
Chci se zeptat..da se nejak zjistit ip adresa odesilatelu.pripadne jaky maji OS a prohlizec.?
dekuji. moc..
A po přidání vzkazu nebo stránkování aby stále byla adresa /index.php?page=guestbookN-a vsevjednom.cz se používá include:<?phpif (ereg("msie", strtolower($_SERVER['HTTP_USER-_AGENT'])) AND !ereg("opera", strtolower($_SERVER['HTTP_USER-_AGENT']))){
$ie=1;
}ech-o iconv("utf-8", "windows-1250//IGNORE", file_get_contents("http:/-/vsevjednom.cz/guestbook.php?g-b=10008&odpoved=".$_G-ET['odpoved']."&gb_pg-=".$_GET['gb_pg']."&-amp;hledat=".$_GET['hleda-t']."&lan=cs&ie=&-quot;.$ie));
?>
Koupil bych ti třeba pivo, nebo s něčím pomohl.
Opravdu jsi mi ušetřil čas.
P.S. máš to tu super.
Adresu má ve tvaru "NĚCO888".net.upc.cz (NĚCO888 znamená, že je tam text i čísla....).
Díky Max
ale i tak díky...
Všechny komentáře jsem si nečetl, tak doufám, že to tady ještě není. V souboru admin/index.php ti nejspíš chybí deklarace javascriptové funkce ct(). Takže při editaci příspěvku člověk nemůže udělat smajlíky nebo upravit styl textu.
šlo by ji doplnit o chráněnná jména? jako např. u bluebordu?
nejdřív se zobrazí:Deprecated: Function ereg_replace() is deprecated in /home/zabavy-akce.cz/zabavy-akce.cz/navstevni-kniha/functions.php on line 8
Deprecated: Function ereg_replace() is deprecated in /home/zabavy-akce.cz/zabavy-akce.cz/navstevni-kniha/functions.php on line 9
a pak teprve ten příspěvek.
Nevíte někdo, jak na to?
chyba je v tom, ze v nove verzi php uz nelze pouzit funkce ereg_replace.
Ma se nahradit funkci preg_replace.
opravil jsem si to v souboru function.php nahradil jsem řádek 8,9 timto:
Sice o php nic nevim, tak me nekamenujte pokud jsem si to opravil spatne, ale provizorni oprava mi zafunguvala minimalne na smajliky
mám takový problém, přesouvám se na jiný hosting a potřeboval bych vyexportovat DB.
Když v phpMyAdmin dám exportovat jako csv do souboru, tak výsledek při exportu je, že je špatně kódování a nejde to nijak změnit zpět: "½elám Vám požehnané vianoÄné sviatky,veľa Å¡Å¥astia,zdravia , lásky ". Potřeboval bych tu DB vyexportovat, jak na to, abych měl správně diakritiku. Text v knize je v CZ i SK, kódování všude utf-8.
Díky za radu.
chcem sa opytat ako je to s diakritikou, ked zadam nejaky znak napr. "š,č" adt, tak mi ho nevypise a ani znaky nasledujucom po nom. Co s tym? Dik
Dík za tu návštěvní knihu..., teda já si vlastně napsal svou, ale z té tvé jsem použil funkci pro převod textu a smajliky :)
Ještě jenou dík. Ya
tento guestbook je pro mé potřeby těžkého amatéra dokonalý. jen jsem se chtěl zeptat, zda-li lze nějak ošetřit že by mi přišel info email, v případě vložení příspěvku do gbooku?
předem děkuji za odpověď :-)
http://mike.treba.cz/doc/2016/gb/guestbook.zip
Co je špatně?
Díky
1. Diakritiku v mailu (pouze odesílatel), který přijde jako notifikace na nový komentář. Chodí mi to takto: novĂ˝ komentář Všude jinde v mailu je diakritika zřejmě v pořádku.
2. Knihu jsem si přendal do své stránky, kterou includuji jako obsah do stránek, není tedy v původní složce "quesbook". Mám problém s definicí adresy ve <form action=<?php $config['guestbook']['self_url'] ?> a následně pak na 5. řádku a možná i na řádku 26.
Knihu mám ve strance kniha_navstev.php, ktera je ve slozce "obsah". Pokud ve <form> zrusim action a vyremuji radek 5. vse beha. Ale prijde mi lito, nevyuzit vlozeni odkazu na knihu do mailu.
Adresu javascriptu jsem taky menil, ale docilil jsem jen toho, ze se mi otevrel cely script. Tedy pokud jsem mel spravne nahradit v kodu veskere: javascript:;
Adresa na kouknuti je zde:
http://www.kom72.cz/index.php?stranka=kniha_navstev
$config['guestbook']['self_url'] = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
-
jak se liší PHP_SELF a REQUEST_URI můžeš nastudovat na php.net v manuálu. jinak ten form musí mít atribut "action", mohlo by to blbnout. raději natvrdo, než nic.na blogu jsem uváděl i funkci, která umí automaticky zjistit aktuální url včetně všech parametrů a tak, můžeš se podívat, jen nevím, jestli to nebude už moc náročné. http://mike.treba.cz/zjisteni-url/
Ted uz to beha, tedy krome vkladani smajliku, ale ty stejne zrusim, takze mi je to jedno :-D
Mam jeste jeden dotaz. Dala by se kniha upravit tak, abych smel reagovat na prispevky pouze ja? Napada me zpristupnit tlacitko reaguj pouze z admin sekce?
odkaz reaguj
<? }?>a nebo potom podmínka, když jsi přilášený, tlačítko tam bude:<? if(!empty($_SESSION['is_logged'])){?>
odkaz reaguj
<? }?>
<a href="javascript:;" ...>reaguj</a>
<? }?>a na tom druhém místě stejným způsobem.
Jeste bych potreboval helpnout s tou admin sekci. Admina jsem vlozil do dalsi stranky:
http://www.kom72.cz/index.php?stranka=kniha_navste-v_admin
a pri editaci ci pokusu o smazani, mne to vyhodi na uvodni stranku.
A jak by fungovalo ta odpoved/reaguj pouze prez mne? Prave pri te editaci?
Jinak díky za tvou dobrou práci.
https://secure.php.net/manual/en/book.mysqli.php
ChybaSQL dotaz:CREATE TABLE `knizka_2` (
`id` int(10) unsigned NOT NULL auto_increment,
`jmeno` varchar(255),
`text` text,
`datum` varchar(255),
`email` varchar(255),
`web` varchar(255),
`addr` varchar(255),
`r` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8MySQL hlási: Dokumentácia
#1044 - Zakázaný prístup pre užívateľa: 'skpoznanie'@'localhost' k databázi 'information_schema'
I tak, za ni děkuji, málokdo dnes nabízí něco zdarma.
Přidat komentář