Autor | Zpráva | ||
---|---|---|---|
zajac Profil |
#1 · Zasláno: 5. 9. 2014, 21:13:21
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 |
#2 · Zasláno: 5. 9. 2014, 21:34:33
Spočítat co? Soubory? Proměnné? Jejich hodnoty?
|
||
zajac Profil |
#3 · Zasláno: 5. 9. 2014, 21:36:29
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 |
||
zajac Profil |
#5 · Zasláno: 7. 9. 2014, 13:38:05
"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 |
#6 · Zasláno: 7. 9. 2014, 13:54:54
Použij relativní cestu, ale tentokrát správnou:
require_once ("../../../tu/1.php");
|
||
zajac Profil |
#7 · Zasláno: 7. 9. 2014, 14:06:34
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 |
#9 · Zasláno: 7. 9. 2014, 14:12:44
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 |
#10 · Zasláno: 7. 9. 2014, 14:17:04
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 |
#11 · Zasláno: 7. 9. 2014, 14:21:58
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 |
#12 · Zasláno: 7. 9. 2014, 14:26:44 · Upravil/a: zajac
"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 „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 |
#14 · Zasláno: 7. 9. 2014, 15:32:42
"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. |
||
Časová prodleva: 10 let
|
0