Autor Zpráva
zajac
Profil
Mám súbor 1.php - obsahuje premennu $xy1 a kopec ďalších premenných a rôznych iných funkcii a riadkov, tak isto mám súbor 2.php -> obsahuje - > $xy2, a súbor 3.php -> $xy3 ...
Tieto premenné sú výsledkom z aplikácie, čiže sa neustále menia.
Potrebujem ich v súbore pokus.php spočítať.
Ako tam (do toho pokus.php) tie premenné dostanem?
mimochodec
Profil
Spočítat co? Soubory? Proměnné? Jejich hodnoty?
zajac
Profil
Sorry, samozrejme, že tie meniace sa hodnoty tých premenných.
Kubo2
Profil
Ako chceš tie hodnoty spočítať, keď sa neustále menia? K čomu ti to bude?

Snáď len pripomeniem, že ak v súbore pokus.php napíšeš podobný kód

<?php

require('1.php');
require('2.php');
require('3.php');

// ...

tak v mieste komentára // ... už máš globálne k dispozícii všetky premenné, ktoré si definoval (inicializoval) v tých troch vložených vkladaných súboroch. S ich hodnotami potom môžeš robiť, čo ťa len napadne.
zajac
Profil
"Ako chceš tie hodnoty spočítať, keď sa neustále menia? K čomu ti to bude?"
Veď práve to je môj problém, to prečo sem píšem. Toto potrebujem vyriešiť.

A áno, ale keď to spravím takto, tak mi všetky 3 súbory zároveň vypíše na tú stránku pokus.php - čo je nežiadúce - potrebujem len tie premenné.

___________
Kamarát mi poradil obaliť funkciami tie jednotlivé súbory, v ktorých sú premenné a na základe toho si cez funkcie vytiahnem čo potrebujem. Teda môj problém je čiastočne vyriešený.
Zdôvodním to čiastočne a dúfam, že niekto bude vedieť čo s tým.
Všetky doteraz spomínané súbory 1.php, 2.php, atď sú v jednej zložke - domena/tu/1.php, 2.php, atď..
Chcem sa k týmto súborom dostať v súbore, ktorý sa nachádza v zložke: - domena/zlozka/1/2/konec.php - akékoľvek pokusy zlyhali. Skúšal som napr. relatívnu cestu: require_once ("../../1.php"); .. taktiež absolútnu cestu: require_once "http://domena/tu/1.php"; - vypíše: Fatal error: require_once(): Failed opening required - čiže nedokáže mi tento súbor otvoriť ak správne chápem tej chybe. Prečo? Ako ho môžem otvoriť? Existuje iná možnosť ako require? (áno, include som skúšal tiež)
juriad
Profil
Použij relativní cestu, ale tentokrát správnou: require_once ("../../../tu/1.php");
zajac
Profil
To už som skúšal..
- Fatal error: require_once(): Failed opening required '../../../tu/1.php' - nerozumiem prečo to nejde. Neexistuje ešte iná možnosť?
Kubo2
Profil
[#5] zajac:
Pri použití relatívnej cesty si v súbore konec.php zanorený tri úrovne pod adresárom doména t.j. v adresároch zlozka/, 1/ a 2/. Aby si sa dostal do adresára tu, musíš vystúpiť o tri adresáre vyššie (../../../), ty si vystúpil len o dva (../../).

Príklad správnej relatívnej cesty v tvojom prípade: ../../../tu/1.php — hovorí „vystúp o tri adresáre vyššie (do adresára domena/) a následne sa zanor do adresára tu/, ktorý je zanorený v adresári domena/ a hľadaj v ňom súbor 1.php“.

nedokáže mi tento súbor otvoriť (...). Prečo?
Dôvodov môže byť celý rad. Napríklad súbor neexistuje, zadal si nesprávne umiestnenie (cestu k súboru) alebo máš v konfigurácii PHPka zakázané vkladať súbory použitím wrapperov http:// a https:// (direktívou allow_url_include = Off).

Ako ho môžem otvoriť?
Možností je samozrejme veľa.

Existuje iná možnosť ako require?
Ak ide o vkladanie súborov, je len na tebe, či si vyberieš include, include_once, require alebo require_once (ja osobne používam vo väčšine prípadov require, niekedy sa hodí require_once, ale to už pomaly stráca svoj účel).


nerozumiem prečo to nejde.
Píše to aj nejakú ďaľšiu chybovú hlášku? Malo by tam byť aspoň sčasti načrtnuté, prečo to nejde otvoriť. Ak tam nie je dôvod, väčšinou skript buď nemá práva daný súbor čítať alebo ten súbor neexistuje.

Ako spomenul Joker v [#9], najskôr nezadávaš správne cestu k súboru. Mohol by si prosím načrtnúť tvoj adresárový strom?
Joker
Profil
zajac:
K první otázce: Proměnné deklarované ve vloženém skriptu jsou pak normálně přístupné v rámci stejného kontextu, v jakém byl vložený, takže v tom není žádný problém.

nedokáže mi tento súbor otvoriť
Nejspíš je chybně název nebo cesta k souboru.

Neexistuje ešte iná možnosť?
Existuje, ale narazí na stejný problém.
zajac
Profil
Kubo2
áno, s tým "allow_url_include" si mal pravdu a to bude asi ten problém.
Tú relatívnu cestu som zadal správne, po upozornení "juriad", ale aj tak to nešlo.
Skúsil som však takto: require_once ("www/domains/domena/tu/1.php"); a vypísalo mi echo, ale nevypísalo mi funkcie. Keď sa k tým funkcíam ale dostanem normálne cez /tu/ zložku, tak by som sa mal aj v zložke /zlozka/1/2/ nie?? Prečo mi tie funkcie proste nevypíšu vôbec nič?
Kubo2
Profil
zajac:
Viď http://hosting.wedos.com/cs/webhosting/php.html pod nadpisom „Měnitelné konfigurační parametry“, uvádzajú tam medzi inými aj allow_url_include. Ale bude ti to zbytočné povolovať, pretože pri otváraní skriptu cez HTTP dostaneš už len výsledok skriptu (ak, samozrejme, si to nezariadiš inak).
zajac
Profil
"Kubo2"
Myslíš si, že kvôli zablokovanému "allow_url_include" mi nejde zobraziť tá funkcia()??

"pri otváraní skriptu cez HTTP dostaneš už len výsledok skriptu"
Ako výsledok scriptu? .. ak to chápem správne, tak presne to potrebujem - resp. to mi celkom stačí. Nepotrebujem sa dostať k celému scriptu a používať z neho povecme napr. nejaké jeho definované $premenné..


Vyriešené!
Stačilo pred funkciu dať echo "" .nazovfunkcie();
Predtým som mal riadok len takto: nazovfunkcie(); - nič mi nevypísal.

Všetkým moc krát veľmi pekne ďakujem.
Kubo2
Profil
zajac:
Myslíš si, že kvôli zablokovanému "allow_url_include" mi nejde zobraziť tá funkcia()??
Nie. Písal som pravý približný opak.

Ako výsledok scriptu?
Povedzme, že máš skript:

<?php

if(!isset($základ) || !is_int($základ))
{
    $základ = 2;
}

printf("Druhá mocnina z %d je %d\n", $základ, $základ * $základ);

Tento skript ti vypíše druhú mocninu z hodnoty premennej $základ. Pred vložením do iného súboru môžeš hodnotu premennej modifikovať a máš k nej prístup v celom kontexte vkladajúceho skriptu:

<?php

$základ = 9;
require('na-druhú.php');
printf("Skript %s nám vypočítal druhú mocninu z %d", 'na-druhú.php', $základ);

Skript ti vypíše:

Druhá mocnina z 9 je 81
Skript na-druhú.php nám vypočítal druhú mocninu z 9

Vkladaný skript beží ako súčasť vkladajúceho skriptu.


Predstav si teraz, že by si vkladal súbor na-druhú.php takto (v prípade allow_url_include = On):

<?php

$základ = 9;
require("http://domena/na-druhú.php");
//...

Po zavolaní by ti skript vrátil výsledok:

Druhá mocnina z 2 je 4

Skript na-druhú.php sa spracuje ako samostatná HTTP požiadavka t.j. ako keby si do prehliadača zadal priamo adresu http://domena/na-druhú.php a ty dostaneš do volajúceho skriptu už len výsledok s mocninou implicitnej hodnoty 2.


zajac:
Stačilo pred funkciu dať echo "" .nazovfunkcie();
Úplne stačí aj <?php echo nazovFunkcie() ?> (bez tých úvodzoviek).
zajac
Profil
"Kubo2"
Aha, no približne tomu asi chápem. Zatiaľ mi však stačí to čo mám. Ale vďaka za objasnenie, možno to využijem niekedy..

A áno, viem len "tie úvodzovky" sú v mojom prípade nutnosť, pretože obsahujú isté html tagy.

Ešte raz ďakujem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0