A što kad nađem bug u PHPu :s

> Hjooj...pojednostavljenjem koda sam dobio da mi umjesto jednog čudnog foldera "img" foldera..da mi izgenerira dva foldera smile
Ovaj drugi se zove: %3Cbr%20
..a zanimljivo, uspije napraviti dva foldera ..a ja nisam umnožava mkdir funkciju. A nisam čak niti iterirao funkciju generirajSkripte(), nego ju pozivam samo jednom wink
1 Like

To sa samoukoscu nema veze. Ali treba da pratis PSR, Zend i slicne standardizacije.
Ali ima sa jednim veze. Ako si samouk, nema potrebe da trazis gresku u PHP-u.
Nego se dohvati nekog FW-a i OOP-a pa ces sav spagetti kod da sredis tako da znas kad si napravio gresku.
Evo i ja sam samouk. Koristim jos FW koji mnogi otpisuju u posljednje vrijeme.
CodeIgniter. Ali on sljaka fenomenalno i nema uopste situacije ‘PHP ne radi’. Ali se ne zaustavljam tu vec trazim da obogatim znanje sa Slim-om, Phalcon-om, Zend-om itd, itsl.
Ako treba da postujes 2M karaktera (kakva je to odrednica uopste?) ili cesto receno 20-50-100 skripti/fajlova da bi izolovao problem u izvornom obliku, sa metodologijom nesto nije u redu. Vidis da jos uvijek ne pominjem Tvoju logiku. Cekam da rijesimo problem prvo. :stuck_out_tongue:

1 Like

Stari moj kakvi su to niski udarci…za spagetti code? Kakve veze ima spagetti code OOP principa sa samoukoscu PHP-a? Ne valjaj gluposti…sramota me slušat.

Zašto bi postao 2M karaktera, kad mogu problem prenesti u 50ak istih? Čemu?

Ne mozes, jel vidis da kod mene to radi, a kod tebe ne u tome i jest problem.

Ostalo necu niti komentirati.

1 Like

Nema veze za niske udarce. Ako ovo moje sto sam pricao nisi shvatio na dobronamjeran nacin niko ti to ne moze objasniti onda. Nisam ja nekulturan vec ti sto na svako pitanje uzvracas nekom vrstom pokusaja vrijedjanja logike.

Sta ti <br u URL-u?

Od pocetka sumnjam u inkonzistentnost i losu sanitizaciju ulaznih varijabli.
Dodaj u vlastiti opus i urldecode() i urlencode() funkcije pa nek ide zivot, neka kod ima 2M + 50 karaktera.
Kad je beg bio cicija? Kreni odavde.
Evo ti pravi savjet. Nikad ne mijesaj PHP i HTML niti ubacuj HTML u PHP varijable.
Ako mora da dodje do mijesanja napravi include PHP varijable/skripte
Dakle nikad:

echo "<p>I am {$height} meter tall.</p>";

vec

<p>I am <?php echo $height;?> meter<?php echo (int)$meter > 1 ? 's' : NULL;?> tall.</p>

My 2 cents

Ovo za kamione avione za neki drugi put dok se Grcka malo pridigne.
:smiley:

Pa cekaj malo…strpljen spašen se kaže :slight_smile:
Ja pripremam da ti pošaljem verziju koja i dalje ima bug, ali je kraća za proučit. Ne kužim problma za to …

Nego, ako imaš sve ovo isto početno, onda nakon što pozoveš generirajSkripte() , nakon toga includaj body. php koji neka ti bude:

<!DOCTYPE HTML>
<html>

<title>phpbug</title>
</head>
<body>

<img src='img/profile-photo.png'/>

</body>
</html>

…pobrini se da nemaš tu sliku u folderu, jer čini se da zaista o tome ovisi.

Da, zato jer je jedna linija koja otprilike izgleda ovako:

<img src='<?php baseURL('img/nesto.png')?>' /> 

…uslijed pretumbacije codea sam ostao bez funkcije baseURL, pa se tu ispisala greška. A iz te greške je nastao novi folder xd.

P.S. primjeti da tako i koristim php tagove (iznimki se uvijek nađe, nek baci kamen prvi tko ima savršen code xd)…no frks za to, radije se fokusirajmo na problem xd. :slight_smile:

Eto napravio i radi sasvim normalno.

Nisi dobro slušao na nastavi…sad još jednom izvrti, bug se pojavljuje kad targetirani folder postoji!! …i kad uvjet nebi trebao biti ispunjen.

S druge strane, koristi istu dubinu patha kao ja. (dvije dubine) Znaci: localhost/projektName/path1/path2

…jer nisam siguran što točno radiš sa ovih svojih nekoliko partova urla?

Treće, evo ti moj .htaccess:

RewriteEngine on



RewriteCond %{HTTP_HOST} ^www\.bozoou.com$ [NC]
RewriteRule ^.*$ http://bozoou.com%{REQUEST_URI} [R=301,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d



RewriteRule .* index.php/$0 [PT,L]

Četvrto, jesi li pregledao cijelu tu liniju foldera koju si stvorio? Neočekivani folder se može pojaviti na N-toj dubini, …ne znam kako se ponaša u tvom slučaju s tvojom dubinom i gdje ti se pojavljuje, ako se pojavljuje.

Evo kompletnog codea…konačno :slight_smile:

Znači, sve što vam treba je:

    <?php 
    
    sleep(0.4); //to je meni čisto da sublime editor stigne napraviti save onlose_focus
    
    $query = $_SERVER['REQUEST_URI'];
        
    $queryParams = explode("/", $query);
    array_shift($queryParams);
        
    $params = array();
    foreach($queryParams as $qp)
        {
        $params[] = $qp;
        }
    
    $PageNames=array();
    //CRAZY SWITCH
    if(1) //ima bug
	{
	$PageNames[]=$params[1];
	$PageNames[]=$params[2];	
	}
    else //nema bug
	{
	$PageNames[]='developingStyles';
	$PageNames[]='fonts';	
	}
    
    function generirajSkripte($pageFolderName,$path,$scriptName)
    	{
    	if(!file_exists($pageFolderName.$path))
    		{
    		echo 'test echooooooooooooo<br/>';
    		if(!mkdir($pageFolderName.$path,0777,true)){die('failed to create...');}
    		echo 'generirane su auto skripte za path: '.$pageFolderName.$path;
    		}
    	}
    
    		
    generirajSkripte("pages/",$PageNames[0].'/'.$PageNames[1],'nebitno');
    
    
    ?>
    
    <!DOCTYPE HTML>
    <html>
    
    <title>phpbug</title>
    </head>
    <body>
    <span class='IMPORTANT'>Vidite, PHP je zamislio da mijenjate ovaj dolje src, i da tako utječete na nazive foldera koji će biti generirani s gornjom mkdir funkcijom xd. </span>
    <img src='img/profile-photo.png'/>
    
    </body>
    </html>

…pa debugirajte.
Nema druge skripte osim toga što se tu vidi! Nema internih funkcija, nema ničega osim ovoga.
Jedino vam treba još valjda .htaccess file koji sam stavio u post iznad…i treba vam u root folderu da napravite folder pages, i unutar toga foldera da napravite još jedan…evo neka i taj bude kao kod mene, znači :

pages/developingStyles

i sad odtvorite stranicu sa linkom localhost/phpbug/developingStyles/fonts

…u prvoj rundi će vam napraviti i folder fonts i folder img. (Inače je meni u verziji ranije radio img samo kad ne radi font) …ovdje mu se nešto malo izmjenilo.
No ovdje i u drugoj rundi, kad je uvjet false, opet će vam napraviti img folder ako ga u međuvremenu pobrišete!!

P.S. kao što možete primjetiti, dodao sam i CRAZY SWITCH, znači prva varijanta će dati bug, druga neće dati bug. Pa vidite koliko to ima smisla, ako su to isti stringovi koji se nalaze u $parts-u !!!

I ajde sad frajeru probaj komentirati sve u htaccessu i onda probaj izvesti kod, i vidjet ces da se nece nista dogoditi. Dakle cijelo vrijeme ti je greska u htaccessu radi internog redirecta. Koliko sam ja sad to na brzinu vidio, ali navecer kad dodjem kuci cu pogledati detalljnije.

Moguće moguće…to bi već imalo nekakvog smisla za razliku od svih dosadašnjih pucanja u prazno.

No nešto mi nije jasno (moram priznati da sam .htaccess ne razumijem kako točno radi) …ali nije mi jasno niti okvirno kako bi on mogao biti povezan sa mkdir funkcijom i kako bi mogao utjecati da se img folder stvara kad mkdir nije zakomentirana, a da se img folder ne stvara kad zakomentiram mkdir. Naravno, uzmi u obzir i da mkdir se nalazi u uvjetu koji je FALSE.

To meni onako okvirno nije dalo niti indicije da razmišljam o .htaccessu, ali ne mogu ništa reći po tom pitanju jer taj segment zaista ne poznajem dobro, tj. ne poznajem skoro nimalo.

P.S. ne možemo zakomentirati cijeli .htaccess, onda se stranica neće niti procesuirati…pa onda naravno neće biti niti prilike da se bug procesuira…

@creatifcode , nego, jesi li ti probao gornji code i dali kod tebe generira img folder??

da i da.
ako <img src="img/profile-photo.png" />promijenim u npr. <img src="test/profile-photo.png" /> onda kreira folder test, ali kao sto rekoh to se dogadja samo kad je .htaccess aktivan, onog trena kad ga zakomentiram, .htaccess, to se vise ne dogadja, a to znaci da je stvar do redirecta i na koji nacin funkcionira kompletna stvar sa htaccess-om, odnosno s internal redirectom. Moram veceras sjesti i vidjeti jel to to. Jer to i je problem sto se tebi dogadja da ti client napravi request za taj folder, a ti sve to hvatas u skriptu i prema tome generiras sebi foldere. Problem je sto ti svaki request hvatas, a ne samo odredjene. To je toliko koliko sam sada vidio.

Aj’ da krenemo od prve linije:

int sleep ( int $seconds ) // ne moze biti float, mi ne znamo da li ima veze sa ostatkom koda a ti ces nam reci

Isto me zanima da li si siguran da zelis povrat $params[1] i $params[2], a ne $params[0] i $params[1] poslije izvodjenja array_shift() funkcije.
Kako da uklopimo

i

Gdje je tu pages?

Ispisi nam echo $_SERVER[‘PHP_SELF’] na kraju skripte / poslije generirajSkripte() funkcije prije zatvarajuceg taga.
Ubaci jos jedan kondicional da izbjegnes eventualno divljanje (e, ovde bi ti odlicno dosla private funkcija u klasi):

    function generirajSkripte($pageFolderName,$path,$scriptName, $working = FALSE)
    {
	    if ($working !== FALSE)
	    {
	    	if(!file_exists($pageFolderName.$path))
		{
			echo 'test echooooooooooooo<br/>';
			if(!mkdir($pageFolderName.$path,0777,true)){die('failed to create...');}
			echo 'generirane su auto skripte za path: '.$pageFolderName.$path;
		}
	    }
    }
    
    generirajSkripte("pages/",$PageNames[0].'/'.$PageNames[1],'nebitno', TRUE);

Bravo, to je logičan odgovor koji povezuje do sad sve spomenute nelogične kombinacije!!!

Huh…da rezumiramo
-stiže novi request
-prolazi if uvjet, jer su novi parametri tu
-zato su varijable ovisne o djelovima URL-a, i zato postoji CRAZY SWITCH
-echo ne bilježi ništa u ovom slučaju, ili barem nemam postavljenu kontrolu takvih ispisa u firebugu. Da je to ajax request, opazio bi…
-zato je echo naizgled preskočen
-zato se ne stvara čudan folder ako se zakomentira mkdir linija
-zato bug ovisi o udaljenom img tagu
-zato imam php erorr ako forsiram if uvjet sa (uvjet || 1) …jer onda prvi krug zaštopam
-zato se ne stvara čudan folder ako blockam if uvjet sa (uvjet && 0)

Ma sve se odlično uklapa, bravo još jednom! :wink:

Moram da priznam da ipak PHP nije zaštekao, ali gornja opažanja su mi bila tako nevjerovatna za uklopiti u bilo kakvu smislenu priču.
S druge strane, svi koji su izokretali moja opažanja…da je to sve naprosto nemoguće da se dešavalo…i da nisam prekontrolirao dobro varijable na ulazu…eto, vidite da je ipak sve bilo moguće :confused:

Fulaš poantu, srry.
CC je rješio.

Što će ti? ne treba tu niti biti u linku poziva stranice. Pages je samo defaultna mapa u koju se svi folderi spremaju koji prolaze autogeneriranje

Ne tvrdi da je rijesio, vec da ce debug-ovati kasnije.
Nadajmo se najboljem. :smile:
Jesi li isao kad na jogu? Duboko disanje itakoto?
Imam na hiljade postova na raznim PHP forumima ali ovokvo odbijanje saradnje nisam dozivio.
Mislim saradnje od onog ko je u buli. Svasta.

2 Likeova

Ne treba niti tvrditi da je rješio…ja znam da je rješio, jer sve postaje smisleno.
Svaka nelogičnost je apsolutno sjela na svoje mjesto sa pretpostavkom da stiže novi request za src img taga.
Žao mi je što to ne uviđaš.
Žao mi je što cijelo vrijeme ne uviđaš gdje je pravi problem…a pametuješ o sto drugih stvari. Meni je prenaporno bilo objasniti sto puta istu stvar…i slušati kako nisam dobro objasnio, kako ovo kako ono…a malo se ko potrudio shvatiti jer cijelo vrijeme pucate varijante koje veze nisu imali s problemom.

I onda kad isponova ukažem gdje je problem i kako se ponaša program, onda sam budala …da je to nemoguće da se tako ponaša…bla bla. Tko nebi postao arogantan…

…ali ne treba mi joga za ovo, jer ja se nisam živcirao ako sam bio arogantan. Sve me ovo prilično zabavljalo, inače nebi ni bio ovdje :smiley:

Arogantan sam jednostavno bio jer niste poštivali moje zaključke, i pravili ste zbog istih od mene budalu. …ako ničim drugim, onda sugestijama koje nisu imale veze s vezom…i moleći me da ispišem neke paramete koje sam si ispisao već mali milijon puta. I onda neke teze…da što ne ispisujem ovo ono…

Eto malo, i moje perspektive… :wink:

Cuti. Dobro da nije do tebe vec do PHP-a. :smiley: