ugrás a tartalomhoz

MRT Portál

Anonymous · 2005. Már. 3. (Cs), 18.53
Sziasztok! Létrehoztam ezt a témát, mert úgyis mindig van valami bajom, miközben magamnak, később másoknak szeretnék egy text alapú portált létrehozni. Tudom, hogy van már ilyen dolog, de más munkájába nem szeretek belepiszkálni, mert annyira nem értek hozzá, szeretném apránként megtanulni, meg nem is tetszik maga az alapötlet, ahogy meg van valósítva (az elrendezési és menüpontok beli kötöttségekre gondolok). Íme az első (ebben a témában) kérdésem:
----------------------
$i=1;
$dir=opendir('wnew');
while(gettype($file=readdir($dir)) != boolean)
{
$i=$i+1;
}
for ($i; $i<=0; $i=$i-1)
{
$file=opendir($dir);
$open=fopen($file, 'r');
$stuff=fgets($open);
fclose($open);
echo($stuff);
}
---------------
Ez a wnew könyvtár tartalmát nyitja meg fordítva, mint ahogyan a könyvtárnevek vannak, s kiolvassa a tartalmát. Elvileg. Az a baj, hogy nem ír ki semmit, de a debugger sem jelez hibát. Eddig ez a legtanácstalanabb helyzet, amiben voltam.. Előre is köszi a segítséget: Mr.Tiny
 
1

Nem azt csinálja

VBala · 2005. Már. 3. (Cs), 20.16
A beírt kód megszámolja a könyvtár bejegyzéseit, aztán nem csinál semmit.

olvasd el még egyszer:
http://hu.php.net/manual/hu/control-structures.for.php -milyen feltételt kell a ciklusnak megadni
Aztán ha azt kijavítottad, ezt csinálja ha nem áll le hibával: megnyitna egy valószínűleg nem létező konyvtárat (mivel a $dir-ben egy int van), utána a visszakapott értéknek (false) megfelelő fájlt megnyitná olvasásra. Ha lenne ilyen fájl, kiolvasna 1k-t, aztán kiírná, mindezt annyiszor amennyi könyvtárbejegyzést megszámolt az elején.

Nem korai még a portálírásra gondolnod? Először szerintem gyakorolj kisebb feladatokon, különben lehet hogy elmegy a kedved az egésztől.
2

Nem :)

Anonymous · 2005. Már. 3. (Cs), 21.14
Áh nemmegy el a kedvem. Csak a könyvtárakkal van nagy gondom, a fájlokban tárolt dolgokat már 'vágom' (szal be tudom írni, meg kiolvasni :)). Amúgy is elég nagy a lelkesedésem és a kisebb feladatoktól szokott elmenni. Így legalább van cél. Kösz szépen, nézem a linket, de még nem olvastam el, csak a php 24 h alatt c könyvet olvastam, de abban nem írja, h ez így rossz...
4

A for ciklusra gondoltam, h n

Anonymous · 2005. Már. 3. (Cs), 21.22
A for ciklusra gondoltam, h nem írja, h rossz....
Próbálom kijavítani, az opendir readdir akart lenni. Köszi szépen, még majd sztem úgyis lesz kérdésem. Ha elkészül a portál, szólok :).
8

illesztési felület?

Dualon · 2005. Már. 3. (Cs), 21.44
Nem tudom, pontosan minek hívják, de arra gondoltam, nem egyszerűbb megcsinálni egy olyan "illesztési felületet", amely függetleníti a portál egyéb rendszereit a lekérésektől, tehát lényegében elválasztani az adatbázis-réteget és a feldolgozó réteget? Mert akkor ugye tulajdonképp bármilyen (mondjuk, hogy egyszerűbb) feladatot meg tudsz oldani ezen csatoláson át, és tetszőlegesen váltogathatod a tartalmi részeket lekérő hátteret...
Vagyis írsz egy olyan portált, ami mehet akár pgsql-lel, mysql-lel, de akár txt alapúan is. Ez csak egy ötlet, még sosem próbáltam, de szerintem komoly kereslet lenne rá.

Amúgy meg tényleg lehet, hogy picit még gyakorolni kéne. Egy portál megírása nem csak abból áll, hogy a funkciókat megvalósítód - mi lesz akkor a kezelhetőséggel, felhasználóbarát megoldásokkal, biztonsággal, stb.? Szerintem ez igényel némi rálátást, vagy legalább tapasztalatot. Nem elrettenteni szeretnélek, csak rávilágítani arra, hogy nem annyira vicces dolog három hónapot dolgozni valamin, mert mindig rájön az ember, hogy másképp kellett volna...
Mondjuk a lelkesedés becsülendő, és ebből tanulsz. Sok sikert!
10

Jó ötlet

Anonymous · 2005. Már. 3. (Cs), 22.10
Értem mire gondolsz. És akkor modulokat rakni hozzá, h pl php-ban, mysql-ben vagy más adatbázisban tárolja az adatokat. Jó ötlet. Igazából a felhasználóbarátság abban is meg fog nyilvánulni, hogy többféle elrendezés is választható lesz. Frame, táblázat, ezeknek több fajtaja. Legalábbis így tervezem. Még elég sok gondom van vele, mert csak 3 hónapja (lehet van az 4-5 is) kezdtem a php-t, s azóta nem volt hűde sok időm. Azért próbálkozom :). Kösz az ötletet, ha kész lesz ide úgyis beírom...
3

Megvalósítási problémák

Poetro · 2005. Már. 3. (Cs), 21.22
Magával a megvalósítással azért erős problémák vannak. Létezik ugye a helpben egy nagyszerű példa, ennek egy kisebb átalakítása:

<?php
$handle = opendir('.');
$filenevek = array();
while (false !== ($file = readdir($handle))) { //ellenörzés, hogy vége-e
    if ($file != "." && $file != "..") {
        $filenevek[]=$file;
    }
}
closedir($handle);
//csinálunk vmit a filenevekkel, mondjuk rendezzük
natsort($filenevek);
//kiírjuk a fileneveket
foreach($filenevek as $val) {
    echo($val."\n");
}
//ugyanezt megtehetjük egyszerűbben:
implode("\n", $filenevek);
//kiírjuk fordított sorrendben
for($i=count($filenevek); i>=0; i--) {
    echo($filenevek[$i]."\n");
}
?>
Mondjuk azt még nem tudom, miből gondoltad, hogy a te függvényed fordított sorrendben írja ki a fájlneveket, attól még hogy te visszafele számolsz.
--------
Poetro
5

Megvan :)

Anonymous · 2005. Már. 3. (Cs), 21.35
Igen, ennyit még egy kódban sem kellett javítanom. Nagyrészt a gyakorlatlanság volt a baj, de itt van a rendes, működő kód. Köszi szépen!!
$i=1;
$dir=opendir('wnew');
while(gettype($file=readdir($dir)) != boolean)
{
$i=$i+1;
}
closedir($dir);
$dir=opendir('wnew');
for (; ; )
{
If ($i==0)
{
break;
}
$file=readdir($dir);
$open=fopen('wnew/'.$file, 'r');
$stuff=fgets($open, '1024');
fclose($open);
echo($stuff);
$i=$i-1;
}
7

for helytelen használata

Poetro · 2005. Már. 3. (Cs), 21.42
Továbbra se értem, miért használod a for-t így.
Az alsó for-t, ha már így akarod lecserélném egy while(true) ciklusra...
vagy

<?
$i=0;
$dir=opendir('wnew');
while(gettype($file=readdir($dir)) != boolean)
{
   $i++; //így növelünk értéket, esetleg: $i+=1
}
closedir($dir);
$dir=opendir('wnew');
for (; i>=0; i--) //itt ellenőrzünk... break nem szerencsés 
{
  $file=readdir($dir);
  $open=fopen('wnew/'.$file, 'r');
  $stuff=fgets($open, '1024');
  fclose($open);
  echo($stuff);
}
closedir($dir); //ezt lehagytad
?>
--------
Poetro
9

Így is valami baja van, pedi

Anonymous · 2005. Már. 3. (Cs), 22.05
Így is valami baja van, pedig azt másoltam be, amit te írtál. Az üzenet:
Parse error: parse error, unexpected T_DEC, expecting ')' in /mnt/ultraweb/w/we/webedit/also.php on line 22
Úgy számold, hogy van előtte még 13 sor egyéb dolog, de én nem találom meg a )-t. Még keresem.
11

Megvan

Anonymous · 2005. Már. 3. (Cs), 22.19
Na megvan a hiba. Nem ) baja volt, hanem hogy a for ciklusban az i-k elől lemaradtak a $-k. Működik a dolog, már csak hozzá kell írni, hogy megfordítsa a sorrendet és akkor szerintem jó is lesz. Köszönöm a segítséget, de ne menjetek messzire, holnap vagy azután biztos lesz még kérdésem :). Köszi az ötletet is, akinek még van, azt is szívesen várom. Üdv:
Mr.Tiny
6

Hú télleg, ez nem írja ki

Anonymous · 2005. Már. 3. (Cs), 21.38
Hú télleg, ez nem írja ki fordítva :). Váh de hüle vagyok. Köszi szépen. Csak már az is jó volt, hogy nem hibaüzenettel tér vissza. Köszi még egyszer. :)
12

Valami miatt nem jó...

Anonymous · 2005. Már. 3. (Cs), 23.25
Mondtam, hogy ne menjetek messzire :). Megint gáz van, de most tényleg nem értem miért.
A programban 2 kikötés is van arra, hogy a . és .. karaktereket ne tegye bele a tömbbe, mégis beleteszi... Na most akkor mi is a gáz??? Itt a kód:

<?php
$i=0;
$dir=opendir('wnew');
$files=array();
while(gettype($file=readdir($dir)) != boolean)
{ 
if ($file != "." && $file != "..") 
{
$i++;
$files[$i]=$file;
}
}
closedir($dir);
for (; $i>=0; $i-- )
{
$file2=$files[$i];
If ($files[$i] != '.' and $files[$i] != '..')
{
echo($file2);
include('wnew/'.$file2);
}
}
?>
Hibaüzenet:
Warning: main(wnew/): failed to open stream: Invalid argument in /mnt/ultraweb/w/we/webedit/also.php on line 32

Warning: main(): Failed opening 'wnew/' for inclusion (include_path='.') in /mnt/ultraweb/w/we/webedit/also.php on line 32
_____________________
Egyébként a program jól működik, csak kidob 2 hibaüzenetet
13

Tudja valaki? Én még most s

Anonymous · 2005. Már. 4. (P), 09.29
Tudja valaki? Én még most sem tudom mi a gáz
14

csak egy apró hiba

VBala · 2005. Már. 4. (P), 09.34

<?php
$i=0;
$dir=opendir('wnew');
$files=array();
while(gettype($file=readdir($dir)) != boolean)
{ 
    if ($file != "." && $file != "..") 
    {
        $i++;
        $files[$i]=$file; //az első elem az 1-es indexű lesz
    }
}
closedir($dir);
print_r($files);
for (; $i>=0; $i-- ) //itt viszont 0-ig számolsz vissza, úgyhogy az utsó körben üres lesz a $file2
{
    $file2=$files[$i];
    If ($files[$i] != '.' and $files[$i] != '..')
    {
        echo($file2);
        include('wnew/'.$file2);
    }
}
?>
15

Kösz

tiny · 2005. Már. 4. (P), 15.27
Uh tényleg. Köszi szépen. Akkor ki is veszem a második ellenőrzést. Na ezzel sok gond volt....

Mr.Tiny :: MRT Site
16

Kódolás

tiny · 2005. Már. 5. (Szo), 20.44
Egy text alapú portálnál ugye a legfőbb gond a kódolás. valaki elcsípi az egyik szövegfájlt, kiolvassa és ennyi. Erre gondoltam megoldást egy code.php segítségével. Bemenete a karaterlánc lenne, s a kiolvasható betűket kódolná. Ehhez persze kéne csinálni egy dekódolót, s akkor máris bukott a mutatvány, mert lelőttük a saját poénunkat. Erre találtam ki, hogy nem csinálunk dekódolót, hanem az összehasonlítandó stringet is kódoljuk. Nem olyanra gondoltam, hogy egy adott karaktert egy másikra cserélünk, hanem függően attól, hogy hol van a stringben vagy milyen karater áll előtte/mögötte cseréljük ki egy másik karakterre. Ez szinte visszafejthetetlen (ép emberi észre gondolok), de biztos lehetne olyat írni, ami megizzasztaná a kódfejtőket. A másik dolog, hogy jobb lenne máshonnan beágyazni a kódot (pl a portál szerveréről és ott időnként változtatni) ezzel is nehezítve a portál rosszindulatú használóinak mások admin jelszavához jutását. Szeretném tudni, mit gondoltok erről, akinek van ötlete, szívesen várom, de a véleményeket is. Üdv:
Mr.Tiny :: MRT Site
17

több lehetőség is van

Anonymous · 2005. Már. 5. (Szo), 22.38
valaki elcsípi az egyik szövegfájlt, kiolvassa és ennyi
1. Csináld az adatfájlokat .php kiterjesztéssel. Akkor a szerver nem küldi el azt, csak az esetleges hibaüzenetet. Php fájl lévén pedig loggolni is lehet a közvetlen eléréseket. Kiolvasáskor meg nem include() hanem fopen().
2. Tedd az adatfájlokat a www könyvtáron kívülre. Így a webről nem érhetők el közvetlenül.
3. Védd az adatmappa tartalmát .htaccess -el a közvetlen eléréstől.
... + van még pár lehetőség.
Szerintem a futásidőben oda-vissza kódolgatás fölösleges bonyolítása a dolgoknak.

Üdv: Thom
18

Sajna nem mind megoldható

tiny · 2005. Már. 5. (Szo), 23.00
Kösz a hozzászólást, de ha nem saját szerverem van, akkor sajna nem tudom a fájlokat úgy elhelyezni. Igazából arra gondoltam, hogyha ez esetleg valaha is elkészül (márpedig igyekszem), akkor elérhetővé teszem mások számára és ha valaki ír hozzá egy modult, akkor még ő se tudjon hozzájutni az admin jelszavához. De a php-s dologban igazad van, azt megfogadom. Még időben van :). Kösz Thom és grat az oldaladhoz :). Üdv:
Mr.Tiny :: MRT Site
19

Túlbonyolítod

VBala · 2005. Már. 6. (V), 14.29
A jelszavakat igenis tárold kódolva, sosem kell őket visszaalakítani. Az ellenőrzéskor a beírt jelszót szintén kódolod és úgy hasonlítod össze a tárolttal. Fölösleges új kódolási algoritmust kidogoznod, használd a meglévőket, vagy azok kombinációját, pl. md5(encrypt($jelszo)), és ne engedj gyenge jeszavakat (minimális karakterszám megadása, betű-szám kombináció legyen, egyforma karakterek figyelése...stb). De ha valaki nagyon be akar törni, úgysem a jelszó-fájlodat próbálja majd visszafejteni :)
Ha ennyire félted az adataidat, de nincs .htaccess-re lehetőséged, használj ilyen fájlneveket: jh34Hg3f45.txt, vagy tedd be egy ugyanilyen kusza nevű alkönyvtárba.
Most hirtelen ennyi jutott eszembe..
20

Kösz

Anonymous · 2005. Már. 6. (V), 15.34
Kösz az ötletet, hozzászólást. Arra nem gondoltam, hogy már lehet ilyen :P. A másik az, hogy én nem féltem az adataimat, mert ami olyan, azt CD-n, vagy egy C:-tól kül. winyón tárolom. Viszont aki majd esetleg valaha hagynálja a portált, neki lehetnek. Csak az admin jelszavat akartam ennyire "bombabiztosra" csinálni...
21

Még egy probléma...

Anonymous · 2005. Már. 8. (K), 20.17
Van még egy bajom, de nem értem miért írja ki a hibát. Az üzenet a következő:
Parse error: parse error, unexpected $ in /mnt/ultraweb/w/we/webedit/includes/count.php on line 98
Ez valahogy mindig az utolsó sorhoz kötődik, pedig ott csak a ?> zárótag van.
A kód utolsó funkciója:
function adduserip($ip)
{
//add users's ip and user's visit
$array2=array();
$array2=readdata();
$i=count($array)++;
$array2[$i]=$ip;
$array2[2]=$array[2]++;
$array2[4]=$array[4]++;
$array2[5]=$array[5]++;
$array2[6]=$array[6]++;
reload($array2);
return true;
}
?>
Ezt átnéztem, de nem láttam hibát, ami miatt ezt csinálná. Ha valakinek van ötlete, legyen kedves szóljon. Köszi:
Mr.Tiny
22

Ha valakinek lenne ötlete,

Anonymous · 2005. Már. 8. (K), 23.09
Ha valakinek lenne ötlete, nagyon örülnék, de ötleteket a portálhoz általában is szívesen várok.
23

Blokkok lezárva?

Dualon · 2005. Már. 9. (Sze), 10.48
Akkor szokott az utolsó sorra hibát írni, ha pl. programblokkot nem zártál le (vezérlési szerkezetet - elmarad egy } pl.).
Ilyenkor érdemes az egészet kikommentelni, és egyre többet "visszaengedni" - amint megjelenik a hiba, tudod, hogy melyik részben van.
Ez amúgy a klasszikus "segíts magadon..." eset - légy találékony, nem muszáj mindennel a fórumra rohanni.

Egyébként meg szerintem telepíts magadnak otthonra is saját webszervert + mysql szervert; egyrészt nem szép dolog devszervernek használni egy "éles" környezetet, másrészt neked se kell állandóan felpakolászni mindent az UW-ra.
A telepítésről van több cikk itt is, a weblaboron.
24

Köszi szépen a hozzászólást, teljesen igazad van,

Anonymous · 2005. Már. 9. (Sze), 13.41
Fogok telepíteni. A mai délután pont ráérek. Megnézem a kódot, ahogy mondtad, ha ötleted van egy portálhoz, hogy mi lenne olyan, ami még egy portálban sincs (gyárilag), ami pedig jó lenne, azt is szívesen várom. Köszi:
Mr.Tiny
25

Még egy baj, de más jellegű

tiny · 2005. Már. 11. (P), 17.58
Újra itt :).
Van bajom, nem is kevés. Föltettem Apache2-t az itteni leírásoknak megfelelően, működik minden, de valami miatt egy fájlt nem akar megnyitni. Minden php, mindent megnyit. Teszek bele egy html fájlt, egy linkkel összekapcsolva, egy másik könyvtárba (localhost/news/full/fajl.htm), nem nyitja meg. Próbálom azt, hogy teljesen mást írok be neki, egy php fájlba annyit, hogy echo"Sikerült";. Erre azt sem nyitja meg. Beírom teljes hivatkozást egymagába böngészőbe, nem niytja meg.NOt found szöveg. Na most mi a baja??? Bármivel próbálkozok abban a könyvtárban, nem jó.
-------------------------------
Másik bajom, hogy túl lassú a php-s IP alapú számláló. Tud valaki olyat, amelyik elég gyors, mert ezt nem találtam. Jó lenne, ha text fájl használna. Az nem baj, ha cookie-t is használ, csak IP alapján is keressen, meg naponta nullázza. Ennyi kéne nekem, ha tudna valaki ilyesmit.
---------------------------------
Várom a válaszokat és előre is köszi! Üdv:
Mr.Tiny :: MRT Site
26

Váh megvan. Most jöttem

tiny · 2005. Már. 11. (P), 23.00
Váh megvan. Most jöttem rá. Elrontottam a linkelést. "-t használtam, ami megzavarta az egészet. Azt viszont megkérdezném, hogy hogy lehet azt megcsinálni, hogy a kép ne lógjon túl a div-en, ha túl kicsi a szöveg. Gondoltam pár dologra, de mondom hátha van valami megoldás css-el. Ha nincs, akkor ne írjatok, abból rájövök, hogy nincs :). Ötletek továbbra is jöhetnek :) Üdv:
Mr.Tiny :: MRT Site
27

is_dir() probléma

tiny · 2005. Már. 15. (K), 15.07
Sziasztok!
Van egy program, ami kilistázza az adott könyvtárban lévő fájlokat, s azoknak a tartalmát fordított sorrendben adja vissza. A readdir() függvény a könyvtárakat is kilistázza, s ennek a kikerülésére próbáltam az is_dir(), is_file() függvényekkel megoldani a helyzetet, de nem működnek. Úgy tekinti mindkét függvény a könyvtárakat, mintha azok fájlok lennének. Itt a kódrészlet:

function appear ($dir)
{
$i=0;
$dir2=opendir($dir);
$files=array();
while(($file=readdir($dir2)) != false)
{
$piece=explode(".",$file);
If ($piece[1] != "txt")
{
if ($file != "." && $file != ".." && ! is_dir($file)) 
{

echo($file);
$i++;
$files[$i]=$file;
}
}
}
closedir($dir2);
$open=fopen("../inst_files/maxnews.txt", 'r');
$maxnews=trim(fgets($open));
fclose($open);
If ($i > $maxnews )
{
rename($dir."/".$files[1], $dir."/old/".$files[1]);
}

for ($i; $i>0; $i-- )
{
$file2=$files[$i];
$of=$dir . "/" . $file2;
$farray=file($of);
mkiir($farray);
}
return "true";
}
Ezek után még mindig szépen belveszi a könyvtárakat is. (az echo($file); csak ellenőrzésnek van ott) Várom a hozzászólást. Üdv:
Mr.Tiny :: MRT Portál Ha online vagyok...
28

Ilyen nezet

tiny · 2005. Már. 16. (Sze), 18.55
Ilyen nezet kérdeztem?
Nekem is ilyen rejtélyes. Ha csak bármi ötletetek lenne a dologgal kapcs. az is segíthet. Már nagyon várom! Üdv:
Mr.Tiny
29

Én lefuttattam a kódod,

csla · 2005. Már. 16. (Sze), 23.49
Én lefuttattam a kódod, és csak a file-okat írta ki, a könyvtárakat nem.
30

az érdekes

Anonymous · 2005. Már. 17. (Cs), 16.13
Az érdekes. Akkor lehet az a baj, hogy van pont a könyvtárnevekben, vagy nemtudom. Megpróbálom anélkül. Köszi