Avatar billede sad-peter-pan Nybegynder
20. juli 2004 - 23:16 Der er 15 kommentarer

to forskellige tekster skiftes til at blive vist

Hejsa. jeg ved absolut ingenting om php eller andet end normal html.

Men jeg har en side hvor jeg gerne vil have to tekster til at stå. Men ikke på samme tid. De skal skifte hver gang en ny besøgende kommer til siden.

besøgende1 ser side 1
besøgende2 ser side 2
besøgende3 ser side 1
besøgende4 ser side 2

osv. Vidst nok super simpelt, men jeg har ikke et hak forstand på det.

Er der nogen der gider at skrive sådan et lille script til mig?

Mvh Thomas
Avatar billede jakoba Nybegynder
20. juli 2004 - 23:28 #1
lav en fil, du jkan fx kalde den 'tekster.txt'
filen skal indeholde 2 linier hver af dem afsluttet med et tryk på returtasten

linie 1 indeholder den ene tekst
linie 2 indeholder den anden tekst

de to linier kan indeholde al den html kode de vil, men de må ikke indeholde nogen linieskift.

på det sted hvor der skal stå den ene kode den ene gang og den anden kode den anden gang skriver du så dette:

<?php
$teksterne = file( "tekster.txt" ); // hent begge linier ind i et array
echo $teksterne[0];                  // udskriv den første af linierne
$fp = fopen( "tekster.txt", "w" );
fwrite( $fp, $teksterne[1] );      // skriv linierne i omvendt orden så det
fwrite( $fp, $teksterne[0] );      // er den anden der står først næste gang
fclose( $fp );
?>

mvh JakobA
Avatar billede sad-peter-pan Nybegynder
21. juli 2004 - 00:12 #2
Hejsa.

Det virker ikke helt som jeg gerne vil have det til at virke:

Når jeg første gang går ind på siden viser den

Username:
Password:2

Når jeg så opdaterer, viser den

Username:
Password:2Username:
Password:1

Og så ændrer den sig ellers ikke mere når jeg opdaterer.
Avatar billede jakoba Nybegynder
21. juli 2004 - 00:21 #3
og du har været omhyggelig med at sørge for at BEGGE linier i filen ender med et linieskift? Det ser ud somom der manglede et liniekift efter den linie du skrev sidst.
Avatar billede sad-peter-pan Nybegynder
21. juli 2004 - 00:44 #4
Ahaa. Nej, jeg lavede en fejl :) - det ser ud til at virke nu.

Og bare sådan så vi har forstået hindanden rigtigt:
det er hver anden bruger der besøger, der ser den samme tekst ikke?
Hvis jeg besøger siden nu, og den viser tekst et, og en anden så besøger siden, så skal den vise tekst 2 for ham, right?

I så fald:
Tak for hjælpen :) Smid et svar hvis du vil have pointsne :)

- Thomas
Avatar billede coderdk Praktikant
21. juli 2004 - 03:21 #5
Her er et andet bud, men det kan sikkert laves simplere ;)

<?php

  $tal = file_get_contents( "tal.txt" );
  $tal++;
  $tal %= 2;

  $fp = fopen( "tal.txt", "w" );
  flock( $fp, LOCK_EX );
  fwrite( $fp, $tal  );
  flock( $fp, LOCK_UN );
  fclose( $fp );

  if ( $tal == 0 )
  {
    // vis text 1
  }
  else
  {
    // vis text 2
  }

?>

Ok, måske en smule besværligt ;)
Avatar billede jakoba Nybegynder
21. juli 2004 - 06:11 #6
>> sad-peter-pan
    nej, desværre ikke right :(  hvis bruger 1 refresher vil han få vist tekst 2, og hvis han refresher igen får han tekst 1 igen. den skifter hvergang nogen henter filen med den kode i, uanset hvem det er.
    for at låse skiftet til de forekellige brugere må scriptet udvides med noget ekstra kode til at holde øje med hvem det er der beder om filen, fx ved at oprette en session for hver bruger, hvis du benytter sessions i forvejen er det ikke så svært, men hvis du ikke bruger sessions er det en pænt stor udvidelse. Jeg ville ikke gøre det uden jeg havde en rigtig god grund til at ønske netop det.

mvh JakobA
Avatar billede chries Nybegynder
21. juli 2004 - 13:54 #7
Jeg ville foreslå du bruger sessions til at holde styr på hans side.

session_start();

$side = 1;
if( isset($_SESSION['side']) ) {
  $side = $_SESSION['side'];
}
else {
  $side = random(1, 2);

  $_SESSION['side'] = $side;
}

echo $side;


ved store nok antal hits ville begge tekster være lige meget vist =)
Avatar billede chries Nybegynder
21. juli 2004 - 13:55 #8
$side = rand(1, 2);
Avatar billede sad-peter-pan Nybegynder
21. juli 2004 - 19:56 #9
chries, som sagt så ved jeg ikke noget om programmering, så jeg forstår ikke helt hvordan du havde tænkt dig at din kode skulle bruges. Er det et helt nyt "script" eller skal det bare tilføjes i det php-dokument jeg allerede har lavet? (det som jakoba foreslog)

Ideen er at begge tekster skal vises lige meget. Tror du ikke at jakobas vil virke fint til det? Jeg regner med at der kommer 100-1000 hits i løbet af et par dage. Jeg ved ikke om det er hvad du kalder et stort antal ;)
Avatar billede chries Nybegynder
22. juli 2004 - 09:20 #10
Mit kode vælger tilfældigt om side 1 elelr side 2 vises. Ifølge statestikken ville ved et uendeligt antal visninger, siderne være vist lige meget =) men du kan da kombinere mit med coderdk's, så er det 100% det vises lige meget:
session_start();

$side = 1;
if( isset($_SESSION['side']) ) {
  $side = $_SESSION['side'];
}
else {
  flock( $fp, LOCK_EX );
  $tal = file_get_contents( "tal.txt" );
  $tal++;
  $tal %= 2;

  $fp = fopen( "tal.txt", "w" );
  fwrite( $fp, $tal  );
  flock( $fp, LOCK_UN );
  fclose( $fp );

  $side = $tal;

  $_SESSION['side'] = $side;
}

echo 'du skal vise side '. $side;
Avatar billede chries Nybegynder
22. juli 2004 - 09:20 #11
eller vælges lige meget må jeg heller sige =)
Avatar billede sad-peter-pan Nybegynder
22. juli 2004 - 14:08 #12
hmm.. og som start og slut skal jeg bare smide <?php og ?> ind eller hvad? :)
Avatar billede chries Nybegynder
22. juli 2004 - 14:09 #13
ja, og gerne være øverst :)
Avatar billede sad-peter-pan Nybegynder
22. juli 2004 - 14:16 #14
Nu viser den "du skal vise side 1" hver gang jeg refresher.. Ikke noget af det der står i tekst filen.

Hvad er fordelen ved at bruge disse sessions frem for jakobas?
Kun at en besøgende altid vil få den samme tekst som vedkommende fik første gang? For jeg regner kun med at få et besøg fra hver person aligevel, så det betyder egentligt ikke så meget.
Avatar billede chries Nybegynder
22. juli 2004 - 14:27 #15
start en browser mere og load siden =) Side valget er låst til det han fik når brugeren først er inde på siden. (indtil næste gang han kommer) hvis jacobs kode virker, kan du vel godt bruge det =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester