- Mobil flották
- Fotók, videók mobillal
- Apple iPhone 17 Pro Max – fennsík
- Yettel topik
- Samsung Galaxy S25 FE - fenséges, felejthető vagy felesleges?
- Nem ártanak az elemek a Realme 15x-nek
- Netfone
- Samsung Galaxy Watch8 - Classic - Ultra 2025
- Apple iPhone 16 - ígéretek földje
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
Ú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
- HIBÁTLAN iPhone 12 mini 64GB Green -1 ÉV GARANCIA - Kártyafüggetlen, MS3451
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
- Konzol felvásárlás!! Playstation 5, Playstation 5 Pro
- Azonnali A320 B350 X370 B450 X470 A520 B550 X570 chipset alaplap felvásárlás személyes/csomagküldés
- Bomba ár! Dell Latitude E5470 - i5-6GEN I 8GB I 256GB SSD I 14" HD I HDMI I Cam I W10 I Gari!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest