Hirdetés
- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Kis méret, nagy változás a Motorolánál
- MIUI / HyperOS topik
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Megtartotta Európában a 7500 mAh-t az Oppo
- Samsung Galaxy S25 - végre van kicsi!
- Xiaomi 15T Pro - a téma nincs lezárva
- Vivo X300 Pro – messzebbre lát, mint ameddig bírja
- Yettel topik
Új hozzászólás Aktív témák
-
cucka
addikt
válasz
RootRulez
#10239
üzenetére
Ez a kód lényegében totál hülyeség, mint ha olyan ember írta volna, aki most tanulta pascal-ban a filekezelést. Érdemes lenne megértened, hogy mit csinál a kód, mert abból nem fog semmi jól kisülni, ha kriptikus kódsorokat másolgatsz abban a reményben, hogy hátha működni fog.
A kérdésedre a válasz a korábbi kódot felhasználva:
function isUrl($val){ return $val != ''; }
//a file sorait beolvasom a $linkek tömbbe
$linkek = array_filter(file("linkek.txt"), 'isUrl');
//véletlenszerű kulcs kiválasztása a linkek tömbből
$tkey = mt_rand(0, count($linkek)-1);
//kiválasztok 1 elemet a tömbből a $link változóba
$link = $linkek[$tkey];
//törlöm a tömbből a kiválasztott elemet
unset($linkek, $tkey);
//ha elfogytak a file sorai, akkor felviszem az új elemet a $linkek tömbbe
if (count($linkek)==0){
$linkek[0] = 'előre megadott szöveg';
}
//a $linkek tömb tartalmát kiírom a fileba
file_put_contents("linkek.txt", implode("\n", $linkek);Ahogy látod, a kód elején beolvasom a file tartalmát a végén meg kiírom, az összes művelet a $linkek tömbben történik. A kód nem kezeli le azt az esetet, ha az elején üres a file, továbbá egy idő után, ha elfogynak a linkek, mindig ugyanazt a szöveget fogja beírni a fileba majd kiolvasni, szóval gondold át, hogy tényleg ezt akarod-e? A kód futása után a $link változóban éred el a kiválasztott sor tartalmát, pl. beleírhatod egy html <a> tag-be.
(#10240) PazsitZ
Az alap problémában nem szerializált formában van a fileban az adat, továbbá kérdéses, hogy mennyire segíti a megoldás megértését a kódod nagy részét kitevő zaj (kiírások, $_GET feldolgozás, stb) -
PazsitZ
addikt
válasz
RootRulez
#10239
üzenetére
Ilyen esetben én akkor már tömböt használnék:
$filename = dirname(__FILE__) . '/links.txt';
if (isset($_GET['add']) && !empty($_GET['link'])) {
if (file_exists($filename)) {
$links = unserialize(file_get_contents($filename));
} else {
$links = array();
}
echo 'put: ' . $_GET['link'];
$links[] = $_GET['link'];
file_put_contents($filename, serialize($links));
} else if (isset($_GET['get'])) {
$links = unserialize(file_get_contents($filename));
if (count($links)>0) {
$key = array_rand($links);
$link = $links[$key];
unset($links[$key]);
echo "<a href=\"{$link}\">{$link}</a>";
file_put_contents($filename, serialize($links));
} else {
echo 'nincs link';
}
}
Hozzáadhatsz: link.php?add&link=http://prohardver.hu
Kiolvasás és törlés: link.php?get
Új hozzászólás Aktív témák
- Hobby rádiós topik
- A robotaxik bizony karamboloznak, nincs itt semmi látnivaló!
- Posta, csomagküldés
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- OLED TV topic
- Synology NAS
- Xiaomi 15 - kicsi telefon nagy energiával
- Linux kezdőknek
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Robotporszívók
- További aktív témák...
- ReZone Használt PC Bazár Megbízható gépek, korrekt árak.
- HP Spectre x360 Érintős Hajtogatós Laptop Tab 16" -50% i7-13700H 16/1TB Iris Xe 3K+
- Apple watch utlra 2 eladó 2028.05.19-ig garanciális
- ÚJ MSI CYBORG 15 A13VE - 15.6"FHD 144Hz - i5-13420H - 32GB - 1TB - Win11 - RTX 4050 -3 év garancia
- AMD Ryzen 5 5600G eladó!
- 129 - Lenovo Legion Pro 7 (16ARX8H) - AMD Ryzen 9 7945HX, RTX 4080 (ELKELT)
- HP EliteBook 840 G10 - 14"WUXGA - i7-1360P - 16GB - 512GB - Win11 - MAGYAR - 3 év garancia
- Dell Latitude 5400 14" FHD IPS, i5 8365U, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- Bomba ár! Dell Latitude E5540 - i3 / i5 I 6-8GB I 320GB I 15,6" HD I HDMI I Cam I W10 I Gari!
- Apple iPhone 13 Pro Alpine Green ProMotion 120 Hz, Pro kamerák 128 GB-100%
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


