pitanje u vezi rand()

pitanje u vezi rand()

offline
  • Pridružio: 01 Jan 2010
  • Poruke: 75
  • Gde živiš: Beograd

Da li postoji rand sa izuzetkom?
npr
4=brojkojinecu Smile
$lol=rand(1, 6 if($lol==4)) Pa da izbaci neki br ali ne 4)

ja sam ovde napisao kako ja zamisljam tu skriptu da radi a vi mi molim vas recite da li tako nesto postoji ili ako ne da li postoji alternativa



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

$rand = rand(1, 99); if($rand = 4) { $rand = rand(1, 99); }



offline
  • Pridružio: 01 Jan 2010
  • Poruke: 75
  • Gde živiš: Beograd

tako postoji mogucnost da se dobije 4 opet, kod tebe je mala sansa jer se radi o 99 brojeva ali ipak postoji, kod mene se radi o manjoj cifri pa je rizik veci,

resio sam ja, pa ako nekom bude zatrebalo
<?php
$rand=rand(1, 5);
if($rand=="4"){
header("Location: OVA STRANICA";
}else{
dalji kod...
}
?>
Radi se o tome da ce stano iznova ucitavati stranicu dok ne dobije broj koji nije 4 ali sigurno nikad nece biti 4... ako na sajtu imate sadrzaj koji ne sme da se reloaduje napravite ovo kao poseban php fajl i kreirajte kolacic dobijenog broja pa na toj stranici samo uzmite iz kolacica slucajni broj

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Video sam ti gresku iz aviona, mogao bi malo da posvetis vremena na operatere razliku izmedju = i == i ===

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3747
  • Gde živiš: 127.0.0.1

$rand = rand(1,99); while ($rand == 4) $rand = rand(1,99);

Ovako nikad neces da dobijes 4, a ne moras da osvezavas stranicu unedogled Wink

@MilanKragujevic

if($rand = 4) uvek zadovoljava uslov, tj uvek je true jer se radi o operateru dodele (=) a ne operateru uporedjivanja (==). I posle ovakvog reda $rand je sigurno 4.

offline
  • Pridružio: 01 Jan 2010
  • Poruke: 75
  • Gde živiš: Beograd

<?php
ob_start();

// ovde dodje deo gde proveravam da li je ulogovan...


$iizbroj = count(file("listasajtova.txt")); //BROJIM KOLIKO SAJTOVA IMA TRENUTNO U BAZI
$izbroj=$iizbroj-"1"; // ODUZIMAM 1 JER JE PRVI RED U FAJLU UVEK 0, DEFINISEM POSLEDNJI SAJT
$min = "0"; //DEFINISEM PRVI SAJT
$brojlinije = rand($min, $izbroj); //BIRAM SLUCAJNI REDNI BROJ SAJTA
$fajl = "listasajtova.txt";
$fajllinija = file($fajl, FILE_IGNORE_NEW_LINES);
$link = $fajllinija[$brojlinije]; // UCITAVAM LINIJU IZ FAJLA I UZIMAM KOJI JE SAJT POD DOBIJENIM REDNIM //BROJEM

$lokacija="clanovi/".$link."/kredit.txt"; // ODREDJUJEM LOKACIJU SLUCAJNO DOBIJENOG NALOGA

$nnn=file($lokacija, FILE_IGNORE_NEW_LINES);

$stanje=$nnn[0]; //GLEDAM KOLIKO KORISNIK IMA KREDITA NA RACUNU

$potrebno="2"; // DEFINISEM KOLIKO MORA DA IMA DA BI NJEGOV SAJT MOGAO DA SE PRIKAZE

$lokacija2 = file($kolacsajt, FILE_IGNORE_NEW_LINES);

$mojbroj=$lokacija2[4]; //DEFINISEM NJEGOV SAJT DA NEBI DOBIO SVOJ

//SAD OVDE KRECU PROBLEMI Very Happy

if($stanje<$potrebno){ // AKO IMA DOVOLJNO KREDITA NJEGOV SAJT ULAZI U IGRU
// I SAD NE ZNAM STA OVDE DA STAVIM DA BI PONOVO UCITALO SKRIPTU SAMO POD USLOVOM DA PRESKOCI VEC DOBIJENI SAJT JER NE ISPUNJAVA KRITERIJUME I DA TRAZI SLEDECI

}else {

if($mojbroj=$brojlinije){

// OVDE SAM PROVERIO DA LI JE SLUCAJNO DOBIJENI SAJT - NJEGOV SAJT, AKO JESTE OPET MI TREBA PONOVO UCITAVANJE SKRIPTE

}else{

$http = "http://";

$adresa = $http.$link;

session_start();

$_SESSION['prethodnisajt']="$link";

header("Location: $adresa");

}
}

ob_end_flush();
?>

Kako sada ovde da uklopim rand ? hvala..

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

function myRand($min = 0, $max = 100, $exception = array()) {  $no = mt_rand($min, $max);  if(in_array($no, $exception)) {   $no = myRand($min, $max, $exception);   return $no  }   return $no; } // upotreba // echo myRand(0, 5, array(4));

Pisano je iz glave, ali kapiram da bi trebalo da radi..

EDIT:
ili jos bolje, savrsen primer za upotrebu davno zaboravljenog do-while loop-a
do {     $no = mt_rand(0, 5); } while ($no == 4);

..naravno, sa prvim primerom imas reusable kod i mozes u niz da stavis vise od jednog broja za koji ne zelis da bude vracen..

Ko je trenutno na forumu
 

Ukupno su 858 korisnika na forumu :: 11 registrovanih, 1 sakriven i 846 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., alkatraz080, babaroga, Istman, ladro, marsovac 2, Mi lao shu, nebkv, Oscar2, repac, stegonosa