- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- MasterDeeJay: H110-es lapban 10.gen Comet Lake működhet?
- eBay-es kütyük kis pénzért
- Luck Dragon: Asszociációs játék. :)
- Parci: Milyen mosógépet vegyek?
- Mr. Y: Motoros sztorik #06
- Elektromos rásegítésű kerékpárok
- Magga: PLEX: multimédia az egész lakásban
Új hozzászólás Aktív témák
-
Balint133
aktív tag
-
válasz
bejmuller #2897 üzenetére
akkor a readfile() függvényt alkalmazod az adott fájlra - ugyanaz mint az include, csak nem értelmezi a php-t.
(#2898) Balint133: Hmmm... akkor lehet header()-es forwarding van, és az fopen nem követi azt. Mindenesetre nézd meg a nyers forráskódot, amit az fopen() kiad, hogy mit tartalmaz
-
bejmuller
aktív tag
-
Balint133
aktív tag
szia, FTP sajnos kizárt, a 'klső' armory portálhoz nincs ftp hozzáférés sajnos
fopen()-el próbálkoztam, de sajnos nem az xml tartalmát adja vissza, hanem vmit az oldal forráskódjából.
ha pl letöltöm az xml filet a gépemre majd feltöltöm a http://endomainem.hu/xmlfileom.xml
ráuszítom az xml parsert az urlel, azt adja vissza amit kell és ahogy kell(ene).
[link]ha viszont http://endomainem.hu/xmlfileom.xml helyett beírom az armory portál linket:
"http://eu.wowarmory.com/guild-info.xml?r=Szervernév&gn=Guildnév"akkor ilyesmit kapok vissza:
[link]MOD: Neem, 5.2.8 azthiszem, majd még finomítgatok rajta, csak a hibalehetőségeket kellett kiszűrnöm, hogy mi miatt nem működik
-
válasz
Balint133 #2893 üzenetére
fopen() függvény? ez jó URL-re is, meg sokmindenre - feltéve hogy a szolgáltató engedi.
Vagy esetleg FTP függvények?Amúgy PHP4 van ott csak? Mert látom a legfapadosabb xml-parsert használod. Ja és amúgy parse-re van egy szép magyar szó: ÉRTELMEZ.
(#2892) t-shirt: SWF nem lenne jó? GIF-szerkesztőről még nem hallottam - szerintem a liszensz miatt nem is lenne ingyen.
-
Balint133
aktív tag
Sziasztok, van egy websiteom, azon egy phpbb forum, a fórum bizonyos topikjait nem látja egy frissen regelt felhasználó, csak egy bizonyos rang felett lévő felhasználók (deszépre sikeredett
), (online MMO játék, akit felvesznek a klánba látja a belső fórumot).
Na már most szeretnék, egy olyan rendszert ami automatikusan frissíti a dolgokat, hogy nekem ne kelljen kézzel álligatnom a rangokat (lusta siteadmin szindróma).
A következőre gondoltam:
* a szolgáltatónál létezik egy Cronn nevű opció ami bizonyos fileokat megadott időben lefuttat - ezzel kipipálva az, hogy hogyan oldom meg a szkript állandó lefuttatását.* a játéknak van egy Armory nevezetű szolgáltatása ami XML-ben letárol mindent (guildinfo -> guild members), ha van eggyezés az armory guild xml ill a forum felhsz listájában == az adott karakter guildtag tehát jár a jogosultság.
A probléma pedig itt kezdődik:
az automatikus sql átbabráló osztály kész, php.net-en találtam egy félig működő komplett xml parsert amit megheggesztettem működik (helyi fileoknál), viszont sehogy nem tudom rávenni a php-t h azt a bizonyos linket használja távolról és azt parserelje (?? nyelvújítás) le.szeretném elkerülni a cURL-t mivel ez jelenleg nem elérhető a szolgáltatómnál
viszont nem tudom létezne e rá másik módszer, ebben kérném a segítségeteket.
ezzel az a gond, hogy vmiért nem az xml-t szedi le hanem magát a böngészőn látható tartalmat
function xml2array($url, $get_attributes = 1, $priority = 'tag')
{
$contents = "";
if (!function_exists('xml_parser_create'))
{
return array ();
}
$parser = xml_parser_create('');
if (!($fp = @ fopen($url, 'rb')))
{
return array ();
}
while (!feof($fp))
{
$contents .= fread($fp, 8192);
}
fclose($fp);
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8");
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, trim($contents), $xml_values);
xml_parser_free($parser);
if (!$xml_values)
return; //Hmm...
$xml_array = array ();
$parents = array ();
$opened_tags = array ();
$arr = array ();
$current = & $xml_array;
$repeated_tag_index = array ();
foreach ($xml_values as $data)
{
unset ($attributes, $value);
extract($data);
$result = array ();
$attributes_data = array ();
if (isset ($value))
{
if ($priority == 'tag')
$result = $value;
else
$result['value'] = $value;
}
if (isset ($attributes) and $get_attributes)
{
foreach ($attributes as $attr => $val)
{
if ($priority == 'tag')
$attributes_data[$attr] = $val;
else
$result['attr'][$attr] = $val; //Összes attribútum elhelyezése egy tömbben aminek a neve: 'attr'
}
}
if ($type == "open")
{
$parent[$level -1] = & $current;
if (!is_array($current) or (!in_array($tag, array_keys($current))))
{
$current[$tag] = $result;
if ($attributes_data)
$current[$tag . '_attr'] = $attributes_data;
$repeated_tag_index[$tag . '_' . $level] = 1;
$current = & $current[$tag];
}
else
{
if (isset ($current[$tag][0]))
{
$current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
$repeated_tag_index[$tag . '_' . $level]++;
}
else
{
$current[$tag] = array (
$current[$tag],
$result
);
$repeated_tag_index[$tag . '_' . $level] = 2;
if (isset ($current[$tag . '_attr']))
{
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset ($current[$tag . '_attr']);
}
}
$last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1;
$current = & $current[$tag][$last_item_index];
}
}
elseif ($type == "complete")
{
if (!isset ($current[$tag]))
{
$current[$tag] = $result;
$repeated_tag_index[$tag . '_' . $level] = 1;
if ($priority == 'tag' and $attributes_data)
$current[$tag . '_attr'] = $attributes_data;
}
else
{
if (isset ($current[$tag][0]) and is_array($current[$tag]))
{
$current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
if ($priority == 'tag' and $get_attributes and $attributes_data)
{
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
}
$repeated_tag_index[$tag . '_' . $level]++;
}
else
{
$current[$tag] = array (
$current[$tag],
$result
);
$repeated_tag_index[$tag . '_' . $level] = 1;
if ($priority == 'tag' and $get_attributes)
{
if (isset ($current[$tag . '_attr']))
{
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset ($current[$tag . '_attr']);
}
if ($attributes_data)
{
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
}
}
$repeated_tag_index[$tag . '_' . $level]++; //0 és 1 indexek
}
}
}
elseif ($type == 'close')
{
$current = & $parent[$level -1];
}
}
return ($xml_array);
}természetesen ha nincs más, akkor megoldom cURL-el, aztán megvárom míg a szolgáltató beüzemeli az új szerverét.
ez nem működött:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://eu.wowarmory.com/guild-info.xml?r=Nordrassil&gn=Solidarity");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
$file = curl_exec($ch);
curl_close($ch);
$stack = array();
function startTag($parser, $name, $attrs)
{
global $stack;
$tag=array("name"=>$name,"attrs"=>$attrs);
array_push($stack,$tag);
}
function cdata($parser, $cdata)
{
global $stack,$i;
if(trim($cdata))
{
$stack[count($stack)-1]['cdata']=$cdata;
}
}
function endTag($parser, $name)
{
global $stack;
$stack[count($stack)-2]['children'][] = $stack[count($stack)-1];
array_pop($stack);
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startTag", "endTag");
xml_set_character_data_handler($xml_parser, "cdata");
$data = xml_parse($xml_parser,file_get_contents($file));
if(!$data) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
xml_parser_free($xml_parser);a hiba lehet totál egyszerű, de én már nem látok az elkeseredettségtől
-
t-shirt
veterán
üdv!
php-vel szeretnék animáló gif-et készíteni, van erről valami használható leírás vagy példa file? -
válasz
Louloudaki #2888 üzenetére
Pedig eléggé beszédes neve van.
number_format( $szám, $tizedesek_száma, $tizedes_jel, $ezres_elválasztó ) -
Louloudaki
aktív tag
melyik az a php függvény ami a számokat helyiértékesen formázza? 100 000, 10 000 stb ilyen formában? nem találom.
-
bejmuller
aktív tag
Üdv
Habár a archív topikokban már láttam felétve a kérdést, a válasz még nem tiszta számomra.
Kezdő vagyok php-ben. Összeszedtem netről egy működő login script-et. Nagyjából értelmeztem hogy mi miért van benneSzépen működik. Ezzel nincs gond. Van a "www" mappában nekem egy "docs" mappa amit htaccess-el védek.
Azt hogy tudnám megoldani, hogy amint bejelentkeztem az oldalra, tudjam elérni a "docs"-ban levő fájlokat? Mert értelemszerűen így bejelentkezés után is bejön az apache ablakja hogy adjam meg a felhasználónevet és a jelszót.
Gondolom nem kell minden mysql-ben meglevő usernek külön jelszót generálni a htpasswd állományba. Elég nekem egy univerzális user és jelszó, mivel kintől ugysem látható.
De nem tudom hogy kellene megírni. Próbálkoztam úgy hogy http://user:passwd@localhost/docs/allomany.kit úton érem el az adott fájlt, de ez így eléggé favágónak tűnik, és úgy vettem észre, hogy a böngésző megtartja magának valahol ezt a logint, mivel ha nem jelentkezek ki, akkor utána akarhányszor hozzá tudtam férni a "docs"-ban levő adatokhoz, mindaddig míg nem üritettem az előzményeket.Valakinek valami tippje?
Köszi előre is. -
válasz
pumatom #2884 üzenetére
A dreamweaver jó php-re is, de csak nagyon minimálisan támogatja. Ha jó autokieges szerkesztőt akarsz, akkor az (eclipse alapú) Aptana Studio jó választás lehet. Nem találtam még jobbat nála. Bár ezt majd inkább akkor ajánlanám, ha pl már eljutottál az OOP-ig, mert azelőtt szvsz még csak zavarna a sok feature.
-
pumatom
aktív tag
SZiasztok!
kezdő vagyok a témában jelenleg, és egy kérdésem lenne...
Tudnátok ajánlani egy progit, amit php szerkesztésre lehetne használni?
Ahogy van pl a html-ben a dreamweaver, így remélem létezik erre is hasonló program
A segíséget előre is köszönöm!
Üdv!
-
válasz
Tele von Zsinór #2881 üzenetére
Tehát nem notepadot.
Amúgy mostmár inkább biztosra megyek és a virt gépről nyomulok nano-val.
-
válasz
Tele von Zsinór #2877 üzenetére
Megvan a hiba. Rájöttem.
TILOS windózból piszkálni a linuxos php.ini-t, mert más a sorvége karakter, s így a PHP nem fogja beolvasni a konfigurációs paramétert. Samba serveren keresztül, win-féle megosztással piszkáltam anno. Kitöröltem a problémás deklarációk körül a sorközöket, majd visszaírtam, és lám...
-
válasz
Tele von Zsinór #2877 üzenetére
Igen, mert ha mást állítok akkor az állítja.
Valahol valami override lehet, de nemtom hol az istenbe... Apache egyik attribútumát is piszkáltam, ami idetartozik, de az is jó.
-
Xaero88
tag
válasz
Tele von Zsinór #2868 üzenetére
Tény, és igazatok van. Én switchel szüröm általában.(most kimaradt a kodbol,kapkodtam)
De ha az URL file-access disabled akkor hiába ir be külsö php-t nem? nem fogja behivni. -
Lusta vagyok megcsinálni, sokat kell konfigolni, meg az új gépnél is szakadozik a net, lehet a server 2008 r2 a baja, mert össze szokott veszni a routerral, s így az utóbbi gyakran elérhetetlen.
Restart segít csak (ami nagyon jó, mert pont azért raktam fel servert, mert nem szoktam leállítani a gépet
). De az már volt amúgy, s úgyis sz@r.
Post, upload max méret állításra valami?
-
Ejjj, ez a vmware alatti intrepid valamiért elég bugosnak tűnik, lehet ha csinálok egy újat akkor megjavul. A vmware sírt amikor újra beraktam virtuális gépet windows reinstall után, s ez a virtuális ubu server is elég fluktuáló módon kap internetet, de mellette van egy NATos virtuális hálókártya is, az meg megy rendesen.
Elég régi ez a maChina, szóval lehet nem a php a ludas, hanem a vmware vagy én. Csinálok egy másik vm-et oszt kiderül. -
válasz
Tele von Zsinór #2871 üzenetére
Ja valamilyen szinten igazad van, csak a php nem szól semmit ("csak" annyit hogy a superglobals tömbök üresek), mindegy a hibát sikerült kezelni.
Viszont most az szúrja a szemem, hogy a php.ini-be a post és az upload max méretére akármit is állítok be, az előbbi 8M az utóbbi 2M lesz. Na ez mitől van? Ez már tényleg idegesítő.
Mást nem állítottam, csak a memory limitet 256M-re.
Amúgy Ubuntu serveren megy a cucc.
Szerk: Bazz, kikapcsolni se lehet a feltöltést a php.ini-ből... Nem reagál semmit. Más állítása meg megy, csak ezek nem.
-
XDebug-nál le lehet valahogy lőni, hogy ne rinyáljon ha meghaladja a POST mérete az ini-ben meghatározottat?
Ha leradírozom, nem rinyál.
-
válasz
Tele von Zsinór #2868 üzenetére
Nemhogy kevéssé biztonságos, egyenesen veszélyes: Akárki beleírja a $_GET['oldal']-ba, hogy http://xyz.hu/hack, aztán rögtön külső php-kódot futtat, szevasz.
Szűrni kell az inputot, pl így:
$oldalak = array('hirek', 'cikkek', 'tesztek', 'forum');
if (isset($_GET['oldal']) && in_array($_GET['oldal'], $oldalak) {
require_once($_GET['oldal'] . '.php');
} -
Xaero88
tag
válasz
RootRulez #2864 üzenetére
@ RootRulez
Átirányitás letöltés után:header('Location: url ');
mod: em tudom végül milyen számlálót tettél be, de ha fájlkezelős, akkor
fread() vagy file_get_contents()
Más.. :
amugy ilyen menüs oldalbehivársa én ezt szoktam használni:
ezt még késöbb mod_rewriteolni se nehézif(isset($_GET['oldal']))
require_once($_GET['oldal'].'.php'); // php vagy html a vége ahgoy jobban tetszik
else
require_once('main.php'); // main vagy amit akarsz[ Módosította: Viktor77 ]
-
válasz
Tele von Zsinór #2863 üzenetére
Kipróbáltam a módszert, és érdekes módon úgyis gyorsabb, hogy először beolvasom az össze fájlt egy másik fáljba, majd azt adom a php-nak hogy értelmezze.
Érdekes, de nagyon.
-
válasz
Sk8erPeter #2862 üzenetére
Nem, csak az volt, hogy ciklusba voltak ágyazva az include-ok, kábé így:
while(iteráció) {
include('ugyanaz a fájl.');
}Én hülyeségem.
HTML űrlap generálás miatt kellett, s nem ilyen volt hanem sok egymásba ágyazott ciklus, így állandóan a winyón kellett kaparnia 17 fájl után, amiből néhányat akár 70x is be kellett ágyazni. Írtam egy osztályt, ami gyorsítótárazva ágyaz be, azaz ha valamit beágyaz, akkor beírja egy változóba is a benne lévő php scriptet, majd ha mégegyszer be kéne ágyazni, akkor már a memóriából olvassa be a scriptet, s eval-lal újra lefuttatja. Persze a szkript lefutása után törlődnek a cuccok a memóriából, így ezzel "csak" 5x tempót értem el, ami még mindig 2x lassabb az egy fájlos módszernél, úgyhogy fogtam magam és becache-eltem egy fájlba az egész generált űrlapot (ami 200x gyorsabb), oszt kész, az úgyis ritkán változik
class Cached_Include {
private static $_cache;
public static function inc($inc, &$importVars)
{
$inc = dirname(__FILE__) . '/' . $inc;
if(!self::$_cache[$file]) {
self::$_cache[$inc] = '?>' . file_get_contents($inc) . '<?';
}
extract($importVars, EXTR_REFS | EXTR_SKIP);
eval(self::$_cache[$inc]);
}
public static function save()
{
file_put_contents('cache.txt', serialize(self::$_cache));
}
public static function load()
{
self::$_cache = unserialize(file_get_contents('cache.txt'));
}
}Sebességek amúgy:
sok fájl, no optimalizálás: 1200-1500ms
sok fájl, cachelt include: 180-200ms
egy fájl (minden ebben van): 80-100ms
cachelve az egész hóbelevanc: 1-10ms -
RootRulez
félisten
válasz
vakondka #2855 üzenetére
Köszi!
Kér féle php kódból csak össze kókányoltam egyet, ami müködik is
Azt hogy tudom megoldani, hogy visszamenjen letöltés indulás előtt/után a böngésző, az előző oldalra? Tehát, hogy ne fehát ne üres oldal maradjon...
A php fájlba kell írni valamit vagy a html-be? Azért kérdezek ilyen sültelenségeket, mert arra is ma jöttem rá, hogy a php fájl nem magába megy, mint a html, hanem bele kell ágyazni a abba...mod:
Ja és kiolvasni és kiíratni hogy tudom az oldalra? -
Tele von Zsinór
őstag
válasz
Sk8erPeter #2862 üzenetére
Helyesbítek: a fileműveletek lassúak. Ha 1-2-10 includeod van csak, ez nem fog feltűnni, ha sokkal több, akkor viszont már jelentős visszafogó tényező.
Például a symfony framework ez ellen úgy védekezik, hogy cacheli a teljes core rendszerét egyetlen masszív php fileba, így éles rendszerben csak az van includeolva. -
Sk8erPeter
nagyúr
Ezek szerint az include ilyen durván lassítja a betöltést?
Ez nem túl jó, mert a baloldali menük miatt egy honlapon így oldottam meg, hogy ne kelljen mindenhol megismételni.
Végül is akkor észrevehető valamennyire a sebességbeli különbség olyan esetben, ha csak mondjuk a menüpontokat include-olom? -
PazsitZ
addikt
Először is, ha legközelebb ilyet raksz be használd a kód gombot.
Azért mert lokálisan nyitod meg és nincs szerver, ami feldolgozza a php kódodat.
Rakj fel egy wamp vagy xamp-ot és úgy futtasd a www könyvtárba másolva. Esetleg egy honlapra másolva nyisd meg.Az menu2 utolsó echo részében egyébként van egy felesleges pontosvessző.
Egyébként pedig rengeteg lezáró-tag hiányzik és rémesen van tördelve az egész oldal.
Innen leszedheted, az általam átírt változatot. -
ciluka
csendes tag
felrakom inkább így:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="www.serials.ws" />
<link href="vaz.css" rel="stylesheet" type="text/css" /></head>
<body>
<div id="wrapper">
<div id="fejlec">
<p> </p>
<p></div>
<div id="tartalom_wrapper">
<div id="sav1"> </div><div id="menu1">
<object classid="clsid
27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="940" height="40">
<param name="movie" value="menu1.swf">
<param name="quality" value="high">
<embed src="menu1.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="940" height="40"></embed>
</object></div><div id="menu2">
<?php
if (isset($_GET['page']) and ($_GET['page']=="kezdo" or $_GET['page']=="kepek" )){echo '<object classid="clsid
27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="235" height="400">';
echo '<param name="allowScriptAccess" value="sameDomain" />';
echo '<param name="movie" value="menu2.swf"><param name="quality" value="high"><param name="wmode" value="transparent"><embed src="menu2.swf" width="235" height="400" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent"></embed>';
echo '</object>;';
}?>
</div>
<div id="tartalom">
<?php
if(isset($_GET['page'])){
$page=$_GET['page'];
}else{
$page="tartalom";}
switch($page){
case "kezdo":include('contents/kezdo.inc.php');break;
case "kepek":include('contents/kepek.inc.php');break;
case "videok":include('contents/videok.inc.php');break;
case "forum":include('contents/forum.inc.php');break;case "bad":include('contents/bad.inc.php');break;
case "miert":include('contents/miert.inc.php');break;
case "emlek":include('contents/emlek.inc.php');break;
case "magunk":include('contents/magunk"inc.php');break;
case "kopes":include('contents/kopes.inc.php');break;
case "kozosk":include('contents/kozosk.inc.php');break;
case "ajanl":include('contents/ajanl.inc.php');break;
case "kesobb":include('contents/kesobb.inc.php');break;}
?>
</div>
</body>
</html>ez persze még nincs kész, de ott a menu 2nél van sztema hiba...de mi????
-
ciluka
csendes tag
Sziasztok! A segítségeteket szeretném kérni...gyakorlom a weblap készítést, és van egy php fájlom, amibe nem tudok rájöni mi lehet a hiba...
felraktam ide:http://rapidshare.com/files/263712172/index.php.html
ha valaki lenen olyan kedves, és ért hozzá, kérem mondja el mi a hiba...Amikor megnézem az oldalt akkor echo-kat ír ki sorba..mintha az nem lenne jó...kérlek segítsetek rájönni a hibára!!
köszönöm -
Nagyon úgy néz ki, hogy az a 17 include 1 másodpercet vesz igénybe, amik Qrvára sok! Nyomok egy defragot, hátha segít...
Szerk:
Aha: 22.8kB adat 152 kB helyet foglal.
Szerk2:
egy másik szkriptem még több fájlt használ, de az nagyságrendekkel gyorsabb.
Viszont abban a fájlok osztályokat tartalmaznak, itt meg (nem echózott) HTML kódot, benne pár <?php echo $var ?> cuccal.Szerk3:
Ugyanolyan lassú hulladék töredezettség nékül is.
Ötlet?
-
RootRulez
félisten
Sziasztok!
Honlapra szeretnék letöltés számlálót egy fájlhoz, tehát számolja, hányszor töltötték le. Ha jól tudom php-ban kell irkálgatni valamit, csakhogy még html-ben is full kezdő vagyok php-ről pedig nem is hallottam
Hogy lehet ezt megoldani?
-
válasz
Sk8erPeter #2850 üzenetére
pü
-
válasz
Sk8erPeter #2848 üzenetére
Hát én valami PHP könyvet ajánlanék, lehetőleg PHP5öst, pl a Tanuljuk meg 24 óra alatt a PHP-t az kezdésnek jó, beavat mindenbe ami kell a problémád megoldásához. Ha esetleg tudsz angolul, akkor meg neten találsz rengeteg e-book-ot pdf-ben. Dummies sorozatot ajánlom még nagyon - a stílusa miatt.
-
Sk8erPeter
nagyúr
Hello!
Készítek egy viszonylag egyszerű honlapot, amihez szeretném, ha olyan is tudna feltölteni képeket képaláírásokkal együtt az egyes menüpontokhoz, akinek fogalma sincs, mit kellene átírni a html-kódban.
Arra gondoltam, hogy ehhez lehetne egy admin-felület, - szemléltetésként - pl. www.honlap.hu/admin, és itt be tudna lépni a user egy felhasználónév-jelszó párossal, ami után lenne egy "Tallózás..." gomb (ezzel tudna képeket feltölteni), majd ezalatt három szempont szerinti képaláírás (ilyen táblázatszerűen elrendezve), amit csak be kellene írnia, majd még kiválasztaná, hogy melyik menüponthoz töltse fel, a "Kész!" gomb lenyomásának hatására pedig már meg is jelenne az oldalon, az adott menüpontban az új feltöltött kép.
Gondolom ehhez php kellene, de javítsatok ki, ha nem. Elég kezdő vagyok a témában, tudnátok esetleg valami kicsit szájbarágós leírást adni ahhoz, hogy hogyan is tudnám ezt megvalósítani?Szemléltetésként - ilyesmire gondolok:
A végeredmény meg valami ilyesmi lenne (persze egy adott menüponton belül!):
Előre is köszi!
-
Sok kis fájlra szedtem egy több egymásba ágyazott ciklusból álló 300 soros űrlap-generáló szkriptet + átírtam az echo-kat a php tageken kívülre, s a szkriptem sebessége a tizedére csökkent.
Most vajon sok include miatt lassult be, és/vagy az echotalanítás miatt?
-
Tapasztalta valaki, hogy az Aptana képes gondolatolvasásra autokieg terén?
-
cucka
addikt
válasz
tolerancia #2844 üzenetére
Itt minden le van írva szépen: [link]
Php-ból pont úgy kezeled az eredményeket, mint ha egy egyszerű select-ről lenne szó.
-
tolerancia
csendes tag
Sziasztok!
Tudnátok mondani olyan tutorialokat, weboldalakat vagy online olvasható cikkeket, leírásokat amik a PHP-MySQL tárolt eljárásokról szólnak?
A diploma munkámhoz kell de a neten nagyon kevés anyagot találtam.
Egy teljesen kezdőknek való leírás kellene, hogy hogyan és milyen felépítéssel készítsünk tárolt eljárást MySQL-ben, majd a PHP hogyan küld illetve fogad adatot ettől az eljárástól!
Nagyon fontos lenne!
Köszönöm! -
Tele von Zsinór
őstag
válasz
Gergello #2842 üzenetére
A pontosvesszős explode és egyéb trükközések helyett add át neki a queryket egyesével, vagy tömbként. Akár a függvény nézze, ha tömböt kapott, foreach-el menjen végig rajta, ha nem, akkor csak simán hajtsa végre.
A __sleep() és a __wakeup() azért kéne, mert sessionbe objektumot raksz. Röviden: amikor az scripted véget ér, a session adatok serializálva kerülnek mentésre, objektumokon ilyenkor meghívódik a __sleep(), ahol egyrészt takaríthatsz (leírók zárása, akármi), valamint egy tömbben megmondhatod, hogy melyik tagváltozókat mentse a php. A __wakeup() akkor hívódik meg, amikor a következő oldalnál betöltődnek a session adatok, a __sleepben() visszaadott értékek már be vannak töltve, ilyenkor lehet a korábban zárt leírókat újranyitni, teszemazt kapcsolódni az adatbázishoz, szükséges fileokat megnyitni, amit akarsz.
Hosszútávon a saját DB osztályok helyett jobban jársz valami olyasmivel, mint az említett Pear adatbázisosztály, az ADOdb, esetleg komolyabb vonalon mozogva Doctrine vagy Propel. -
Gergello
addikt
válasz
Tele von Zsinór #2841 üzenetére
Kösz!
A logint átírom, az ajánlásod szerint. Igazából már van benne egy login, amit a konstruktor hív, de nem a legokosabban van megcsinálva. Összesen 4 query megy el a loginolással...
A saltolt md5-nek utánaolvastam, az is csere, nagyon jó megoldás.
Olyankor mit csinálsz, ha valahova pontosvesszőt tartalmazó értéket kell beírnod? Ez jogos, bár nem kell sehova ilyen értéket beírni, de ha egy címet így vinne be : Lugas u.5; 5.em 2. azon már elhalna.
A getOne egy értékkel tér vissza, ez a saját sql osztály pár PEAR:B szerű fgvt tartalmaz, megnézem, majd hogy tudnám lecserélni arra.
__sleep és __wakeup-ról nem tudom micsodák. -
Tele von Zsinór
őstag
válasz
Gergello #2840 üzenetére
$exp = explode(";",$query);
Olyankor mit csinálsz, ha valahova pontosvesszőt tartalmazó értéket kell beírnod?
A mysql password() függvénye helyett saltolt md5-öt vagy sha1-et ajánlok.
Egy queryvel illene megoldani az ellenőrzést és az adatok betöltését, az egyik felesleges. Legyen egyetlen select *-os, ahol where-ben meg van adva a felhasználónév és a jelszó, és mysql_num_rows()-al ellenőrizd, hogy van-e ilyen felhasználó, ha igen, belépteted, és rögtön tudod is feltölteni a profilját, újabb query indítása nélkül.
$usr = $sql -> getOne("SELECT username FROM XX WHERE username='".$user."' AND password=password('".$pass."')");
if($usr == $user){ //okA getOne() kódja nélkül ez vaktában, de tippem szerint egy tömbbel tér vissza, ami az adott sort tartalmazza, azaz az ifben te egy tömböt és egy stringet hasonlítasz össze. Ráadásul felesleges, azt mondtad, hogy az $user nevű felhasználót kéred ezzel a jelszóval, utána az eredményben a nevet összehasonlítani az eredeti kérés paraméterével értelmetlen, mindig igaz lesz. Vagy volt már olyan, hogy a smarty az "Ezt aztán" kezdetű szöveget írta volna ki?
Látom, osztályokat használsz. Én a Userbe pakolnám a logint: kap két paramétert, a postból a felhasználónevet és a jelszót, és akár bool értékkel jelzi, hogy sikerült-e, vagy hibát dob, de mindenesetre a sessiont megfelelően feltölti a user adataival, jogaival, stb.
A User osztálynak készítettél __sleep és __wakeup függvényeket? -
Gergello
addikt
Nah, szerintem kész van az admin felület amit csinálok. Kikérném, egy-két részről a véleményeteket.
Van egy saját sql osztályom, ennél több fgv is van benne persze:
function query($query){
$exp = explode(";",$query);
$res = mysql_query($exp[0]);
return ($res)?true:false;
}
function escape($string){
return strip_tags(mysql_escape_string($string));
}Ez néha még egy intval()-al meg van kombinálva.
login ilyen:
session_start();
if(!isset($_SESSION['U'])){
if(isset($_POST['user']) && isset($_POST['pass'])){
$user = $sql->escape($_POST['user']);
$pass = $sql->escape($_POST['pass']);
$ct = $sql -> getOne("SELECT count(*) FROM XX WHERE username='".$user."' AND password=password('".$pass."')");
if($ct != 0){ //ez talan lehehtne == 1
$usr = $sql -> getOne("SELECT username FROM XX WHERE username='".$user."' AND password=password('".$pass."')");
if($usr == $user){ //ok
$usrid = $sql -> getOne("SELECT id FROM XX WHERE username='".$user."' AND password=password('".$pass."')");
$U = new User($usrid,"admin");
$_SESSION['U'] = $U;
header("Location: vmi.php");
}else{
$data->assign('msg', 'Ezt aztán igazán nem kellene...');
}
}else{
session_destroy();
$data->assign('msg', 'Sikertelen bejelentkezés!');
}
}
}else{
header("Location: vmi.php");
}Az egyes oldalak így indulnak:
session_start();
if(!isset($_SESSION['U'])){
header("Location: index.php");
} -
ArchElf
addikt
-
cucka
addikt
Namost a magic quotes az arra jó, hogy a scripted bemeneti adataiban az idézőjeleket lezárja egy \ karakterrel. A beérkező adat alatt a _GET, _POST és _COOKIE tömböket értsd.
A magic quotes beállítás alapból off, a 6-os php-ból ki is fogják szedni, ezért használata nem javasolt. Amennyiben a rendszergazdád nem hajlandó kikapcsolni, akkor a legjobb megoldás, ha írsz egy függvényt, ami az adatokat a magic_quotes_gpc beállítás alapján rendberakja/visszaadja változás nélkül. Ezáltal a magic quotes beállítástól függetlenül működni fog a programod minden szerveren.
A magic_quotes_sybase beállítás pedig csak és kizárólag sybase adatbázis esetén él, gyanítom, hogy nem olyat használsz.
-
Xirtam
veterán
Sziasztok kellene nekem egy kis segítség! Adot egy KFT oldala, na most erre az oldalra szeretnék csinálni jelszós belépést és a felhasználók között 3 rangot generálni!Mindegyik ranggal más lehetőségeket megnyitva!Na most ehez h kezdjek hozzá??Nagyon fontos lenne családi válalkozás!Segítségeteket nagyon köszönöm!!
Még annyit , hogy!
bejelentkezési fül
név:...
jelszó...na most
1. általános felhasználó (munkabeosztások lekérdezése)
2. másodszintű felhasz ( állományok szerkesztése)
3. adminisztrátor ( jogosultságok menedzselése)más menüpontok jelenének meg a más felhasználóknak . az 1. felhasználónak egy táblázat a 2. nek a táblázatba való írás is!!
Köszönöm a segítségeketeket!!!!
-
biker
nagyúr
válasz
fordfairlane #2831 üzenetére
most nem értem, sok próba után (str_replace, meg ascii szűrés) után újra beraktam egy mezei stripslashes kódot, és kiszűri a \-eket
elsőre miért nem ment, azt passzolom.
-
biker
nagyúr
a büdös k..........
Note: If magic_quotes_sybase is on, no backslashes are stripped off but two apostrophes are replaced by one instead.
ezért nem működik a stripslashes
-
biker
nagyúr
válasz
fordfairlane #2827 üzenetére
az a baj, már a bekéréskor szar a tartalom.
ezen a kódod nem segít, mellesleg a \-eket se szedte ki, kipróbáltamtehát elküldöm többek közt ezt:
<span style="font-weight: bold;">jjjj
és megkapom ezt:
<span bold;\="">jjjjj
és ne őrüljek meg...
de ha 2-3x elküldöm ugyanazt, akár ilyen is lehet
<span bold;\\\\\\\\="\"\\\"\\\\\\\"\"" \\\\="\"\\\"\\\"\"">
hozzá kell tegyem, saját serveremen magic quotes off, és 100000% tökéletesen működik.
Spaw WYSIWYG texatrea editor -
defi
tag
válasz
Gergello #2825 üzenetére
tesztelni kb ha valakivel megnezeted hatha o talal valamit amin te atsiklottal, de ha nem engeded hogy betu,szamon par spec karakteren kivul mas ne tudjanak az oldalnak kuldeni illetve sql usertol is megvonod a jogokat csak ami fontos plusz rendszers backup, nagy baj nem lehet. ha pedig esetleg a szerver is tulajdonodban van ajanlom kitiltani az egoztikus es haszontalan orszagokat sok problemat megold megha nem is szep modszer
-
biker
nagyúr
Ha egy serveren bekapcsolja a k... rendszergazda a magic_quotes_gpc-t és letiltja a kikapcsolását, akkor mit tehetek?
totál széthányja az összes formküldést -
Gergello
addikt
Ilyesmit használt már valaki tesztelésre: SQL Injector & Scanner? Fejlesztek jelenleg egy oldalt, aminek nagyjából kész az admin része és tesztelgetni kellene. Az alap biztonsági fogásokra figyeltem, de ettől még lehet, hogy könnyen törhető maradt. Ma nézem át újra az egész kódot, lehet, hogy bemásolok pár sort, ide, hogy kikérjem a véleményeket. Ti, hogy szoktátok tesztelni az ilyeneket?
-
Beaver
csendes tag
válasz
Orb1337 #2823 üzenetére
Igen!
$sql = "SELECT * FROM hirek WHERE hirid = ".intval($_GET['hirid']);
esetleg ha nem adnak meg hirid-t, a legfrissebbet vegye:
if (isset($_GET['hirid'])) {
$sql = "SELECT * FROM hirek WHERE hirid = ".intval($_GET['hirid']);
} else {
$sql = "SELECT * FROM hirek ORDER BY hirid DESC LIMIT 1";
} -
cucka
addikt
válasz
Orb1337 #2821 üzenetére
Ha egyelőre újdonság neked a php és a mysql, akkor javaslom, hogy az Ajax-ot, meg az Ajax-os js keretrendszereket egyelőre hanyagold.
Az Ajax egy sor ergonómiai problémát is felvet, nem véletlen, hogy a legtöbb profi weboldal nem használ Ajaxot a tartalom újratöltésére. -
Orb1337
tag
Köszönöm, az ajaxhoz sajnos nem értek, de mindenképpen megfogom tanulni
.
Viszont találtam valamit amin elindulhatok:
$sql = mysql_query("select * from hirek order by hirid desc");
while($hirek_row=mysql_fetch_array($sql))
{
echo "<table id='htabla'>";
echo "<tr><td id='htablacim'>
<a href='?lap=hirmeg&hirid=".$hirek_row['hirid']."'>".$hirek_row['cim']."</a></td></tr>";
echo "<tr><td id='htablatartalom1'>"
.$hirek_row['tartalom1'].
"</td></tr><tr><td id='htablatovabb'><a href='?lap=hirmeg&hirid=".$hirek_row['hirid']."'>Tovább>></a></td></tr>";
echo "</table>";
}; -
-
Orb1337
tag
Hali,
az oldalamon a híreket egy adatbázisban tárolom és egyszerű lekérdezéssel jelenítem meg őket. Azt hogyan tudnám megvalósítani, hogyha rákattintok egyre, akkor azt új oldalon a tartalom divbe jeleníti meg? -
kolja
tag
válasz
Fire/SOUL/CD #2815 üzenetére
Nem is ... amint beírtam a kérdést rá is jöttem, utánaolvastam ... aztán bamm
Hatalmas köszönet a scriptért és a sok segítségért ...
Mégegyszer kössz!kolja
-
-
kolja
tag
válasz
Fire/SOUL/CD #2812 üzenetére
Köszi!
Csináltam egy próbát és szépen műxik!
Lehet ezt akár linkről is működtetni? Monnyuk a DHTML menüből? -
Hali!
Igen, ez egy tipikus "probléma", nevezetesen, hogy úgy frissítsd az oldal tartalmát, hogy az az egész oldal betöltése nélkül történjen...Ahogy ArchElf is írta, az Ajax tud ebben segítséget nyújtani, de ne aggódj, anélkül megoldhatod, hogy el kellene merülnöd az Ajax programozásban.
Az alábbi scriptet illeszt be a forráskódodba vagy egy külön Javascript fájlba(ez utóbbi az elegánsabb, szebb megoldás természetesen)function getHTTPObject() {
if (typeof XMLHttpRequest != 'undefined') {
return new XMLHttpRequest();
}
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {alert("HIBA: A kérés nem teljesíthető...")}
}
return false;
}
function LoadToAnyWhere(url,xWhere) {
var http = getHTTPObject();
http.onreadystatechange = function() {
if (http.readyState == 4) {
document.getElementById(xWhere).innerHTML=http.responseText;
}
}
http.open("GET", url , true);
http.send(null);
}Használata egyszerű, példul az alábbi sor szerint, egy gombra kattintva, betölti a content ID-vel azonosított elembe, a side1.php-t.
(nyílván itt a Te korábban említett txt fájl feldolgozó php-d is lehet)
ID-vel persze "elláthatsz" DIV-et, vagy akár egy tábla egyik celláját is...<input name="" type="button" value="Load Side1" onClick="LoadToAnyWhere('side1.php','content')" />
Természetesen a scriptben módosíthatod a hibakezeléskor kiírandó szöveget, amire szeretnéd.(mást ne...
)
(alert("HIBA: A kérés nem teljesíthető...")Ezekkel a böngészőkkel biztosan működik, mert annak idején, amikor a script készült, nyílván le kellett tesztelnem...
IE6+, FF2+, Opera8+, Safari 3+, NN8+Fire.
-
ArchElf
addikt
-
kolja
tag
Üdvözlet!
Nagyon amatőr vagyok!
Honlapocskát szertnék csinálni, addig már eljutottam, hogy megvan a szerkezete, alapja egy táblázat, csináltam hozzá DHTML menütket, megvann a formája, már csak az adattal való feltöltés hiányzik ....
Nagyon kezdő módon minden link egy új html-re mutatna amiknek az alapja ugyanz a menürendszer, háttér, forma, kialakítás ... ha valami változás állna be a menüben akkor erősen borulna az egész rendszer, és minden lapon át kéne vezetni a változásokat ha jól gondolom...
Gondolkodtam a frame-ek alkalmazásán de ott elveszik a DHTML menük lényege.
A kérdésem a következő lenne:
PHP segítségével megoldható e, hogy a linkekre kattintva, az oldal frissítse magát úgy, hogy a táblázat egy cellájába (css formázott) beolvassa a kívánt adatokat a linkhez tartozó txt fileokból?
Ha ez valahogy így működhet, akkor ha jól sejtem megúszom a frameket és a változások átvezetését minden html fileomon.
Ha ez lehetséges kaphatnék-e valami iránymutatást, hogy merre induljak el?Előre is kösssz!
-
Tele von Zsinór
őstag
Windows: ha feltelepítetted, akkor keresd a php.exe n. filet, ennek a helyét tedd bele a $PATH környezeti változóba, és akkor mindenhonnan eléred. A saját scriptjeid futtatása így megy: `php filenév`
Linux: disztrótól függ ez a rész, ubuntu és debian alatt a `php5-cli` csomagot kell felraknod, gentoo alatt a `dev-lang/php`-t, és kész is vagy. Futtatás ugyanúgy.
-
Xaero88
tag
HTTP szervert is telepitettél alá?
Ha manuálisan szeretnél vele szenvedni, akkor ezt a leirást nézdd meg.
Ha Next-Next-Next módon akarod feltenni a php-t, akkor meg Ezt töltsd le és a www mappába dolgozz.
-
<?php
// fájlnevek
$in = 'bemenet.txt';
$out = 'bemenet.txt';
$temp = md5($out);
// fájlokat megnyit
$input = fopen($in, 'r');
$tmp = fopen($temp, 'w');
// iterál
$i = 1;
while(! feof($input)) {
// sort beolvas
$line = fgets($input);
// páratlan sort beír a kimenetbe
if($i % 2 == 1) {
fputs($tmp, $line);
}
$i++;
}
fclose($input);
fclose($tmp);
// ha létezik a kimeneti fájl már, akkor felülír
if(file_exists($out)) {
unlink($out);
}
// átnevez
rename($temp, $out); -
Gyorsabb, memóriakímélő pufferelős módszer:
<?php
// fájlnevek
$in = 'bemenet.txt';
$out = 'kimenet.txt';
// fájlokat megnyit
$input = fopen($in, 'r');
$output = fopen($out, 'w');
// iterál
$i = 1;
while(! feof($input)) {
// sort beolvas
$line = fgets($input);
// páratlan sort beír a kimenetbe
if($i % 2 == 1) {
fputs($output, $line);
}
$i++;
}
// fájlokat bezár
fclose($input);
fclose($output);Az eredmény ugyanaz, csak ez szinte semennyi memóriát se eszik és jóval gyorsabb.
-
<?php
// beolvas
$text = file_get_contents('bemenet.txt');
// sorokra darabol
$lines = explode(PHP_EOL, $text);
// iterál
for($i=0;$i<count($lines);$i++) {
// minden második sort töröl
if($i % 2 == 1) {
unset($lines[$i]);
}
}
// sorokat összefűz
$text = implode(PHP_EOL, $lines);
// fájlbaír
file_put_contents('kimenet.txt', $text);bemenet.txt és kimenet.txt fájlneveket cseréld arra, amire kell. A feldolgozandó fájlnak a szkript mellett kell lennie, illetve a kimenet is a szkript mellé kerül.
Annyit még hozzátennék, hogy kis fájlokra ideális, nagyobb (több megabájtos) fájlokra már igencsak lassúcska és zabálja a memóriát.
Új hozzászólás Aktív témák
Hirdetés
- Xbox Series X|S
- Kecskemét és környéke adok-veszek-beszélgetek
- sziku69: Fűzzük össze a szavakat :)
- One otthoni szolgáltatások (TV, internet, telefon)
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Kerékpárosok, bringások ide!
- OLED TV topic
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Alkoholista nevelde
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- További aktív témák...
- BESZÁMÍTÁS! Intel Core i7 8700K 6 mag 12 szál processzor garanciával hibátlan működéssel
- BESZÁMÍTÁS! Gigabyte A620M R5 7600 32GB DDR4 512GB SSD RTX 5060 Ti 16GB Zalman i3 NEO Enermax 650W
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 4070 Ti Super GAMER PC termékbeszámítással
- BESZÁMÍTÁS! Sony PlayStation 4 PRO 1TB SSD fekete játékkonzol extra játékokkal garanciával hibátlan
- BESZÁMÍTÁS! ASRock B550M R5 5600 16GB DDR4 512GB SSD RX 6600 XT 8GB Kolink Observatory LM RGB 600W
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged