Eli tein testiä, joka toimii tekstitiedostoilla ja lataa tietystä tekstitiedostosta KAIKKIEN käyttäjien KAIKKI tiedot. Laitoin kirjautumisen estoksi myös sen, että jos IP ei ole tekstitiedostossa allowedIPs.txt, ei pääse sisään (en käytä tässä php:n omaa kirjautumistoimintoa, koska tämä on vain testi) ja jos on käyttäjä on kirjautunut yli $maxlog (4) kertaa, ei pääse sisään. Ongelmana tässä kuitenkin varmaan on toi jaollisuusehtolause, koska ohjelma tulostaa mulla ainakin vain $userlistin viimeisen ysillä jaollisen rivin ja käyttää ehtolauseet ainoastaan sitä käyttäen, vaikka $i+7 löytyisikin allowedIPs-tiedostosta. Miten ongelman voisi korjata?
$userlist = file("userlist.txt"); $allowedIPs = file("allowedIPs.txt"); $maxlog = file("maxlog.txt"); for($i=9 ; $i < count($userlist) ; $i=$i+9) { $tmp = $userlist[$i+7]; $tmp = str_replace("\n","",$tmp); $tlg = $userlist[$i+8]; $tlg = str_replace("\n","",$tlg); $maxlog[0] = str_replace("\n","",$maxlog[0]); if(array_search($tmp,$allowedIPs) && $tlg < $maxlog[0]) { echo "<center><form action='userregard.php' method='post'><input type='submit' value='".$userlist[$i+5]."' name='ent'><input type='hidden' value='".$userlist[$i]."' name='userent'></form></center><br>"; } }
Joo sain selville, että ongelma on varmaankin tos array_search($tmp,£allowedIPs)-funktiossa, koska ilman sitä toimi, mutta ei silti sillä tavalla, kun olin ajatellut. Miten ton array_search-jutksan vois korjata? Koitin tilalle in_array:ta, mut toimi samalla tavalla.
Luulen että se ei toimi siksi, koska $allowedIPs taulukossa joka solun viimeinen merkki on rivinvaihto.
Eli etsi merkkijonoa: $tmp."\n" (mikäli käytät rivinvaihtona \n:ää
Tai sitten poista rivi $tmp = str_replace("\n","",$tmp);
Erhm... Poistan ton \n:n tossa rivin 9 paikkeilla :/
Sitten se toinen vaihtoehto jonka sanoin...?
Aihe on jo aika vanha, joten et voi enää vastata siihen.