Vendégkönyv lapozás
Üdv!
Csináltunk a suliba vendégkönyvet! illetve ott elkezdtük de miután hogy nekem is kellene a weblapomra így otthon folytattam, szóval megírtam hogy Mutassa az időt is, az ip címet mentse, Illetve kijavítottam a smyle-s hibát, és moderációs részt is csináltam.
Csak sajnos a lapozást még meg szeretném oldani ebbe kérnék segítséget, mert sajnos annyira még nem vagyok jó php-s hogy ez menjen (a többi a suliban tanultak miatt könnyen ment ) Köszönöm előre is a segítséget!
A kód: (write.php)Read.phpIndex.html (ez majd összelesz vonva php-vel később, csak suliban így kérték)Előre is köszönöm!
■ Csináltunk a suliba vendégkönyvet! illetve ott elkezdtük de miután hogy nekem is kellene a weblapomra így otthon folytattam, szóval megírtam hogy Mutassa az időt is, az ip címet mentse, Illetve kijavítottam a smyle-s hibát, és moderációs részt is csináltam.
Csak sajnos a lapozást még meg szeretném oldani ebbe kérnék segítséget, mert sajnos annyira még nem vagyok jó php-s hogy ez menjen (a többi a suliban tanultak miatt könnyen ment ) Köszönöm előre is a segítséget!
A kód: (write.php)
<?php
//1. rész
$nick=$_POST["nick"];
$hsz=$_POST["hsz"];
$datum = date("Y-m-d H:i:s");
$ip=$_SERVER['REMOTE_ADDR']; //ip cím
$miles=array("<img src=msolygo.png></img>","<img src=vigyorgo.gif></img>","<img src=tok.png></img>");
$mit=array(":) ",":D",":P");
$xd=str_replace($mit,$miles,$hsz); //smyle csere
$tiltott=array("csúnya","ronda");
$modera=array("*modera*","*buta*");
$modi=str_replace($tiltott,$modera,$xd); //üzenet moderálás
$modinev=str_replace($tiltott,$modera,$nick); // név moderálás
//[b] bbcode-félkövér
$modi = preg_replace("/\[admin\](.*)\[\/admin\]/","<strong>$1</strong>",$modi);
if (empty($nick)||empty($hsz))
{
print("Minden mezőt kikell tölteni <a href=index.html>Vissza</a>");
}
//2. rész
else
{
$nick=strip_tags ($nick, '<. a><. b><. i><. u>');
$hsz=strip_tags ($hsz, '<. a><. b><. i><. u>');
//3. rész
$fajl=fopen("hszol.txt", "a");
fputs($fajl, "$modinev|$datum|$modi|$ip#");
fclose($fajl);
header("Location: read.php");}
?>
<?php>
//1. rész
print ("<body bgcolor=000000><center><font size=2><stong><br>Vendégkönyv</center></font></strong>");
$fajlnev="hszol.txt";
$fajl=fopen($fajlnev, "r");
$meret=filesize("hszol.txt");
$kiir=fread($fajl, $meret);
//2. rész
$modi=explode("#", $kiir);
$hsznum=count($modi);
//3.rész
for ($x=$hsznum-2; $x >0; $x=$x-1)
{
$a=explode("|", $modi[$x]);
print("<table align=center width=400px border=0><tr><td bgcolor=grey><strong>Nick:</storng>$a[0].$a[1]-$a[3]</td></tr><tr><td bgcolor=white>$a[2]</td></tr></table>");
}?>
<a href="index.html"><center><font color=white size=2><strong>Üzenet írása</strong></center></a>
<form action="write.php" method="POST">
Nicknév <input type="text" name="nick"><br>
Hozzászólás <input type="text" name="hsz"><br>
<input type="Submit" value="küld"><br>
</form>
A könnyebbik lehetőség nem
Nemcsak a lapozót lehet könnyebben összedobni vele, hanem az adatok épségét sem kockáztatod. (Mint látom nem használsz lockot, márpedig a moderálásnál újraírásnak is lennie kellene és annak a lockját itt is vizsgálni kellene.) Emellett ha kedved tartja majd keresni, sorba rendezni, IP cím szerint csoportosítani, az is könnyebb lesz adatbázissal.
Hát adatbázist meg még csak
Illetve esetleges költözéskor jobb ez szerintem hogy nem kell az adatbázissal sem kínlódni.
Illetve sok idő lenne átírni szerintem, és azért már a nagyobb része kész.
már a nagyobb része
Ahogy elnézem, még az is összezavarná a szkriptet ha a látogató használná a mezőelválasztó | és a bejegyzés elválasztó # karaktereket valamely űrlapmezőben. Adatbázis használata esetén az ilyen elválasztókkal sem volna gond.
Ezen kívül például arra sincs védelem, hogy a látogató ne másolhassa be például Arany János Toldi trilógiáját.
Hát ebben igazad van, csak
a Elválasztókról igazad van. De gondolom az is tiltható mint pl az <a> kód is.
Toldi dolog: az is jogos. az a rész kimaradt egyenlőre de az egy egyszerű űrlap tulajdonsággal kiküszöbölhető.
Úgy hogy kérek titeket hogy ebben a formában is segítsetek köszi előre is.:)
Legyen. Persze a szép
Sajnos a magyarázás nem az erősségem, úgyhogy inkább kiegészítettem a kódodat a lapozóval. Olvasd át, változtass benne és figyeld mi hogyan romlik el tőle, majd ha szükséges, kérdezz.
Köszönöm szépen. Igen igen Át
Igen igen Át olvasom és változtatom.
Természetesen CSS lesz hozzá berakva-ez csak ilyen suliba csinált Test kinézet.
Amúgy valamiért nem jó.
Parse error: syntax error,
$lap = intval($_GET['lap']);
sor? Érdekes. A fentebbi kódomat kimásoltam innen a Weblaborról és még mindig működik. Változtattál már rajta valamit? Ha igen, mutasd.Igen az a sor. Nem lett
Nem lett módosítva semmi
Hát én abban a sorban csak
Na az érdekes hazaértem és
Most már csak annyi segítség kellene hogy azt a két elválasztót (# | ) valahogy tiltani hogy a azt írjuk be akkor azt ne vegye figyelembe így mint a <a> esetén pl hogy egyszerűen azt nem írja.
a másik gondot meg a MAXLENGTH dologgal megoldom :) az űrlaposat hogy bármennyi szöveg írjható
Nem jó
preg_split
vagy hasonló képében.Most már csak annyi segítség
Persze ismét Poetro írta a szép megoldást, de a reguláris kifejezések ilyen böhöm nagy szövegek esetében nem éppen a leggyorsabbak. Főleg, hogy kellene bele egy kis negatív look-behind assertion.
Ok ez megvan. Még három
Még három kérés
1.) Ha http://valami.hu/ akkor az átalakítható linké amivel megnyitható Új lapon, (persze ha sértő szó akkor a http://modera.hu cím legyen :D)
2.) Olyanra gondoltam hogy alapból ír egy szöveget a mező mondjuk hogy Nicknév ha rákattintok eltűnik a szöveg. Javasript kódot láttam már rá de azt a Write.php-be kellene de a header meg nem örül a html js kódoknak
3.) Jelenleg úgy van hogy ha nem írunk be egy mezőt akkor kiad egy új oldalt egy szöveggel ami csúnya fehér meg minden azt szeretném párbeszéd panelra tenni úgyszintén ugyanaz a gondom mint az elébb a header miatt.
Köszönöm előre is !
Ami a linkesítést
Ami a második pontot illeti, HTML5 megoldja. (Lásd a példakódot lentebb.)
Ami a JavaScriptes alternatívát illeti, nem értem miféle headernek volna köze hozzá és kinek nem tetszene.
Ami a ki nem töltést illeti, HTML5 szintén megoldja:
Plusz egy kérdés: a hozzászólás mező miért nem textarea? Általában azt szokták ilyen esetben használni.
Na ez is jó ! Azért nem
Azért nem textarea mert suliba nem úgy kérték de azt majd átírom
Következő kérés most már tényleg ez a utolsó :)
Felvénnék még egy űrlapot weblap hoz (űrlap kódba berakni php-n bekérve az változóba $web)az lenne a kérdésem hogy olyan kellene hogy ha abba az űrlapba webcímet írunk akkor az is megnyitható legyen de oly módon hogy ha rá kattintunk a névre tehát a akkor lehessen megnyitni. (új lapon)
Tehát van egy név mező ugye meg lenne egy web mező és ha valaki ír a web mezőbe akkor a akkor a küldés után a név re kattintva ugrana elő a weblap.
köszi előre is!
Bocs, de ez most az a
az mégse fontos az a neves
amúgy mondtad azt a moderálásos dolgot az azért kell mert ez egy játék szeró weblapra megy és ha valakit bannolunk akkor elkezdi az adminokat szidni meg ilyenek. és legalább a csúnya szavak többségit szűröm úgy már jó. Bár ez is kijátszható pl ha a szóba tesz de ha már 10 esetből 8. nak nem sikerült kiírnia amit akart már jó.
Amúgy kérdés az hogy a localhoston jól mutatja az időt de ha felrakom tárhelyre ott már több órás eltérés van (pl 10:43-kor írtam az üzit de ő csak 04:43-at mutat. Ez szerver oldali idő beállítási hiba? Valahogy javítható mondjuk időzónával vagy bármivel?
Próbáld ezt tenni a szkript
(*) – Ezt a Weblabor elkúrja. Előnézetnél még rendben, de mentés után itt levágja a szöveget végét.
OK működik. köszi. a
a moderálásban igazad van kipróbáltam :) Arra gondoltam hogy egy admin.php-t csináltam amin lesz a vendégkönyv meg valami jelszóval védett fájl lesz vagy egy belépő rendszeres Utóbbihoz van már forrásom(még évekkel ezelőtt találtam) és akkor azon az admin.php-n lenne egy piros x amivel az adott sort lehet törölni. Bár nem tudom hogy ilyet lehet-ne e
Ha csak nincs valami egyszerűbb megoldás a problémára. Mert hogy a txt ből törölgetni a sok üzenet után már problémásabb lenne főleg amilyen átláthatatlan tud lenni. Korábbi ip címet tároló txt-ből jól tudom.
Mert hogy a txt ből
Első beírás a vendégkönyvbe.
* Dupla üres sor határolja bejegyzéseket.
* Első sor meta adat, a többi a bejegyzés szövege.
* A bejegyzés első és utolsó sora nem lehet üres, dupla üres sor nem lehet.
* A szimpla üres sor bekezdés elválasztó.
2.2.2.2 2012.02.02 http://masodik.hu/ Második név
Második beírás a vendégkönyvbe.
.
Amit admin.php ügyben írtál, nem értem. Azt hittem az már készen van, legalábbis a korábbi „moderációs részt is csináltam” szavaidból úgy értettem, hogy az már megvan.
Értem, Kész az admin.php de
Most azzon gondolkodom hogy esetleg a sértő dolgokat tartalmazó sört törölni. És akkor történhetne weben nem kéne jegyzet tömbözni. És így akkár a többi adminból is lehetne moderátor.
ezt találtam de sajnos nem megy
ezt találtam de sajnos nem
Remélhetőleg előtte van valamicske ellenőrzés is, mert így bárki bármit kitörölhet. Ha pedig pont a bejegyzés vagy mező elválasztókat törlik, akkor egyetlen mozdulattal tönkretették az adatállományt.
Hát nem találja
Csináltam egy text.txt beírtam az url címit torol.php?muvelet=torol&mit=valami és nem törötlte hanem kiírta hogy nincs ilyen sor vagy mi és a valami szó volt a 1. sorban tehát megkéne etalálnia
Az csak azért történik, mert
Na énis visszatértem csak a
Ok jogos, köszi és működik is!
Most egy ip tiltót csinálok.
Van egy ilyen kódom:
Meg még azon gondolkodom hogy űrlappal felvenni az tiltott ip-ket (most tárhelyről kéne php fáljba írni. az admin.php-ben de először az ip cím tiltás működjön most az a fontosabb! :)
köszönöm előre is :)
Hát először is én az $ip
Oké köszi Én valahogy
Én valahogy összeakartam vonni @ elé beírtam az in_array meg ilyenek. Tényleg sokat kell még tanulgatni ebből :)
Másik olyat lehet hogy a $tiltott tömböt űrlappal is felesen tölteni. Néztem a php 24 órát meg a netet is de nem találtam hasonlót :)
Elválasztó
Azaz amire igazából szükséged van, az egy index fájl. Ez eltárolja, mennyi üzeneted van, és hogy az egyes üzenetek hány bájtot foglalnak. Ekkor csak ezen a jóval kisebb fájlon kell végigmenni, ami ha ideálisan tárolod a számokat (mondjuk 4-8 bájton), akkor már a fájl méretéből meg lehet mondani, hogy mennyi üzenet van, illetve mivel fix méreten van tárolva egy üzenet hossza, ezért a fájlban közvetlenül oda tudsz pozicionálni ahhoz az üzenetnek a hosszához, amire szükséged van. Azaz 4 bájtos üzenetméretekkel számolva, a 100. üzenet hossza a 400. bájton kezdődik, és 4 bájtot kell innen beolvasni, majd számmá alakítani.
Igen igen, köszönöm ezt is de
Megírtam
Köszönöm szépen neked is a
Jó dolgok vannak benne
(Válasz a 31.
Itt már csak annyi változás lenne, hogy az eddigi deklaráció helyett file() függvénnyel állományból olvastatod be a $tiltott tömb tartalmát. Persze az állomány formátuma ehhez más kell legyen: minden IP cím külön sorban.
Oké értem erre a részre majd
Most meg megcsinálom az utolsó simításokat majd tesztelek. Ezt majd később ez annyira nem fontos egyenlőre! Eddig ilyen ingyenes vendégkönyv volt beágyazva. és csak 2 ip-t kellet tiltani január 1 óta azt meg egyenlőre beírható php fáljba is.
Illetve már csak a php-s
Másik felraktam tárhelyre
És lett egy olyan problémán hogy az ű és ő karakterek nem jelenleg meg természetesen ezt az egyik túl kedves tagunk észrevette Az árvíztűrő tükörfúrógép ből ez lett "árvízt&_369;r&_337; tükörfúrógép "
Kérdés ezt hogyan lehet orvosolni? Köszi előre is!
Ez tipikus karakterkódolási hiba,
Van ugye a content-type...charset... a HTML-ben, és van a php.ini-nek is default_charset, és mentetted a fájlokat is vmilyen kódolással. Ezeknek kell mind megegyezniük (pl. UTF-8).
Rendben köszönöm, sikerült is
A maxlength HTML attribútumot
A legegyszerűbb ha rögtön az elején ellenőrzöd és ha nincs rendben akkor le is állítod a feldolgozást:
Persze ez nem a legszebb eljárás. Sokkal elegánsabb ha a vendégkönyv listázása, a beküldés űrlap és az új beírás feldolgozása egyetlen szkript által van lekezelve. Úgy mint Poetro megoldásában. De mivel nálad a beküldés űrlap még csak nem is PHP hanem statikus HTML, ezért a hibaüzeneteket nem lehet a hibás űrlapmezők mellett feltüntetni.
rendben köszönöm! Ez is jó is
Egy utolsó kérésem még lenne. Ugyanis ez a vendégkönyv nekem beágyazva van. És ha valaki bizonyos karakter mennyiséget egybe ír akkor kicsit szétesek az egész (konkrétan megjelenik a alsó oldalra görgetősáv. ami ronda. Ez a szövegnél nem probléma oda nem nagyon írnak szóköz nélkül illetve meg lehet oldani hogy bizonyos karakter hosz útán rakjon bele szóközt (ezt a weblaboron találtam ) de a linkkel probléma van ugyanis az nem bontható szét szóközökkel mert nem működne tehát valami ilyesmi kellene hogy a felhasználó beírja: (pl: http://weblabor.hu/forumok/temak/111723/hozzaszolas/87377) akkor valahogy átírná [Link] szóra így ez a probléma megoldódna.
Köszönöm előre is
Vagy egyszerűen törhetőre
Oké beraktam Css-be De
Ha szabványos megjelenítést
Ömlesztett tag leves esetén csak találgatni fogja, hogy mit akarsz. Aztán vagy eltalálja, vagy nem.
Ez így nálam működik:
Ok, felraktam ezt Firefox ban
Sajnos persze a látogatóim minden féle böngészőt használnak és igen meglepő módon még Internet Explorer 6!!!-is előfordul meg Firefox 3.6!!!
azt a korábban emlegetet [link] dolgot azt nehéz megcsinálni?
Sajnos persze a látogatóim
Jó megvolt a linkes dolog :D
Css-t hagyom az a linkes dolog után nem fontos már. :)
De most miután hogy kész lett a vendégkönyv, már csak finomítások vannak szeretném megköszönni minden segítséget amit kaptam, Nagyon szépen köszönöm! Sokat tanultam a PHP-ből.
Köszönöm a segítséget mindenkinek! Különösen a legtöbbet segítő Kuka-nak ! :)
Köszönöm még egyszer!
Tökéletesen működik az egész
Kiszámolod
olyat szeretnéd hogy így írja
Igazad van! Ígyis jó sőt még
Nagyon szépen köszönöm ismét a segítséget !
Még egy utolsó kérdés, Ugye
Úgy tudom hogy azt Cokies
A JavaScript vs. PHP dilemmád általában alaptalan: a sütik mindkét oldalon elérhetőek, ugyanis minden – a beállított feltételeknek megfelelő (domain, path, secure egyezés) – kérés fejlécében el vannak küldve a szerverre.
De mivel a te vendégkönyved esetében az űrlapot nem PHP generálja, ezért az űrlapmezőt kizárólag JavaScripttel lehet kitölteni. Ebben az esetben nem is volna szükség a sütire, amely a fentebb említett mechanizmusa miatt picit növeli a hálózaton küldözgetett adatmennyiséget. Helyette a localStorage bőven megfelel:
Nagyon szépen köszönöm
Köszönöm szépen!