- Apple asztali gépek
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Autós töltők 2025: tényleg megvan a 200 W?
- Amlogic S905, S912 processzoros készülékek
- Milyen monitort vegyek?
- OLED TV topic
- Fejhallgató erősítő és DAC topik
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Milyen alaplapot vegyek?
- DUNE médialejátszók topicja
Ú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
- Battlefield 6
- Autós topik
- Apple asztali gépek
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Autós töltők 2025: tényleg megvan a 200 W?
- Amlogic S905, S912 processzoros készülékek
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Formula-1
- Luck Dragon: Asszociációs játék. :)
- Hardcore café
- További aktív témák...
- Dell G15 5530 15.6" FHD IPS i7-13650HX RTX 4060 16GB 1TB NVMe gar
- Eladó! Garanciás! Gigabyte Aorus RTX 3070TI
- MACBOOK PRO M1 8G/256G, ÜZLETBŐL, GARANCIÁVAL
- Evolv Shift 2 Air / X570 ITX / Ryzen 5800X / Radeon 5700XT 8GB / 32 GB DDR4 / 1 TB SSD
- Lenovo ThinkPad P1 Gen 3 i9-10885H (max 5,3GHz) / 32GB / 1TB SSD FHD Win11
- BESZÁMÍTÁS! Acer Predator Helios 300 17 FHD notebook - i7 9750H 32GB DDR4 1TB SSD RTX 2060 6GB W11
- MacBook felvásárlás!! Macbook, Macbook Air, Macbook Pro
- HIBÁTLAN iPhone 13 Pro 256GB Sierra Blue 1ÉV GARANCIA -Kártyafüggetlen, MS3744
- Új Dell 13 Inspiron 5310 FHD+ IPS i5-11300H 4.4Ghz 8GB 256GB Intel Iris XE Graphics Win11 Garancia
- GYÖNYÖRŰ iPhone 12 Mini 128GB Black-1 ÉV GARANCIA - Kártyafüggetlen, MS3635,95% Akkumulátor
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Laptopműhely Bt.
Város: Budapest