Random links code werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Melissa Mae

Melissa Mae

22/05/2015 20:50:43
Quote Anchor link
Hallo,

Graag zou ik wat hulp krijgen met de volgende code.
Helaas weet ik heel weinig tot niets over php en zou het fijn vinden als iemand de oplossing weet.

Wat ik wil is dat ik het volgende bestandje kan bezoeken en elke x als ik het bestandje bezoek er een andere link / url word geopend.

Helaas doet onderstaande code het niet goed want er word elke keer enkel de laatste url gekozen.

Het liefste zou ik hebben dat de linkjes in volgorde 1 2 3 etc word geopend.
En wanneer alle linkjes zijn geweest er weer word begonnen bij linkje 1.

Hier is de code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

$link
[1] = "http://www.google.nl";

$link[2] = "http://www.startpagina.nl";

$link[3] = "http://www.facebook.com";

$link[4] = "#";

$link[5] = "#";

if(!isset($HTTP_cookie_VARS['link'])){ $n=count($link);

$rand=rand(1,$n); setcookie("link",$rand,time()+3600);

header('location:'.$link[$rand]); }else{ $go=$link[$_COOKIE['link']]; header('location:'.$go); }

?>
 
PHP hulp

PHP hulp

20/04/2024 11:04:24
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/05/2015 21:05:46
Quote Anchor link
Leuk om te zien dat je al met een array aan de gang gaat :-)

Misschien mag ik je direct een paar tipjes geven?

- het tellen van nummerieke array elementen begint eigenlijk bij 0 en niet bij 1.

Je zou dus dit kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$link
[0] = "http://www.google.nl";
$link[1] = "http://www.startpagina.nl";
$link[2] = "http://www.facebook.com";
?>


een kortere notatie die precies hetzelfde doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$link
= array(
    "http://www.google.nl",
    "http://www.startpagina.nl",
    "http://www.facebook.com"
);
?>


Dan kun je vervolgens met een array ook gebruik maken van php's array functies.

Daaronder vindt je bijvoorbeeld shuffle en array_rand.

Kijk maar of je aan de hand van de voorbeelden die er gegeven worden iets voor elkaar kunt krijgen.
 
Melissa Mae

Melissa Mae

22/05/2015 21:11:02
Quote Anchor link
Hoi Frank,

Dankjewel voor je reactie en je Tips.
Ik ga er mee stoeien.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/05/2015 21:20:14
Quote Anchor link
Als je wilt dat de linkjes één voor één worden getoond dan ga ik er even van uit dat je dat PER BEZOEKER wilt. Je kunt dan in de sessie onthouden bij welk linkje je gebleven was door de index te onthouden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
$link
= array(
    "http://www.google.nl",
    "http://www.startpagina.nl",
    "http://www.facebook.com"
);

// start php's session service
session_start();

// Bij ons allereerste bezoek zal er nog geen index bewaard zijn in de sessie dus dat controleren we eerst:
if(isset($_SESSION['linkjes_index']) === FALSE)
{

    $index = 0; // array's tellen we vanaf nul weet je nog?
}
else // indien er wel een index in de array staat:
{
    $index = $_SESSION['linkjes_index'];
}


// het gevaar is nu nog dat de teller bij 4 gaat komen terwijl ik maar 3 linkjes heb in mijn array..
if($index == count($link))
    $index = 0;

// nu moeten we de $index nog opslaan voor de volgende keer en we verhogen deze dan met 1.
$_SESSION['linkjes_index'] = $index + 1;
?>

<!DOCTYPE html>
<html>
    <head>
        <title>Mijn titel</title>
        <meta charset="UTF-8">
    </head>
    <body>
    <a href="<?php echo $link[$index]; ?>"><?php echo $link[$index]; ?></a>
    </body>
</html>


Toevoeging op 22/05/2015 21:25:48:

Een sessie wordt overigens na een tijdje van inactiviteit gereset. en dan begint de teller weer vanaf 0. Dat moet ik er wel even bij zeggen. Anders kun je inderdaad cookies gebruiken.

En geen punt :-)
 
Willem vp

Willem vp

22/05/2015 21:52:49
Quote Anchor link
> Helaas doet onderstaande code het niet goed want er word elke keer enkel de laatste url gekozen.

Om hier nog even op terug te komen: dat probleem zit in regel 17.
De eerste keer dat je de pagina aanroept, wordt een random getal gegenereerd. Dat wordt in een cookie opgeslagen. Als je daarna terugkomt op de pagina, wordt de waarde uit die cookie gebruikt. Die wordt echter nooit meer veranderd, dus blijf je steeds dezelfde link terugkrijgen.
 
Thomas van den Heuvel

Thomas van den Heuvel

22/05/2015 23:27:26
Quote Anchor link
Frank Nietbelangrijk op 22/05/2015 21:20:14:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<head>
    <title>Mijn titel</title>
    <meta charset="UTF-8">
</head>

ayyy
 
Willem vp

Willem vp

22/05/2015 23:48:34
Quote Anchor link
> ayyy

Wat is daar mis mee dan?
 
Melissa Mae

Melissa Mae

22/05/2015 23:59:37
Quote Anchor link
Frank / Willem allebij hartelijk dank voor de uitleg zover.

Deze code van Frank is perfect voor wat ik wilde.

Nu uit belangstelling en ik wil het proberen werkend te maken is het moeilijk om de urls nu in een database te stoppen en ze vandaaruit te laden?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$link
= array(
    "http://www.google.nl",
    "http://www.startpagina.nl",
    "http://www.facebook.com"
);

// start php's session service
session_start();

// Bij ons allereerste bezoek zal er nog geen index bewaard zijn in de sessie dus dat controleren we eerst:
if(isset($_SESSION['linkjes_index']) === FALSE)
{

    $index = 0; // array's tellen we vanaf nul weet je nog?
}
else // indien er wel een index in de array staat:
{
    $index = $_SESSION['linkjes_index'];
}


// het gevaar is nu nog dat de teller bij 4 gaat komen terwijl ik maar 3 linkjes heb in mijn array..
if($index == count($link))
    $index = 0;

// nu moeten we de $index nog opslaan voor de volgende keer en we verhogen deze dan met 1.
$_SESSION['linkjes_index'] = $index + 1;
?>

<!DOCTYPE html>
<html>
<head>
<title>Mijn titel</title>
<meta charset="UTF-8">
</head>
<body>
<a href="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $link[$index]; ?>
">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $link[$index]; ?>
</a>
</body>
</html>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/05/2015 00:13:53
Quote Anchor link
Op zich niet zo heel erg moeilijk maar waarschijnlijk onbekend voor jou waardoor je weer even flink aan de slag moet :-)

Misschien kun je beginnen met een database aanmaken in phpMyAdmin en daarin een tabel aanmaken met de naam 'links' of zo. In de tabel maak je drie kolommen aan:

-id (integer, primary index, auto increment)
-name (varchar length=64)
-url (varchar length=255)

Dan zou je kunnen beginnen in PHP om deze tabel uit te lezen met een SELECT query.

Echter gaat het te ver om het hier helemaal uit te kauwen dus dan maar even een linkje:

http://phptuts.nl/view/41/1/
 
Melissa Mae

Melissa Mae

23/05/2015 00:26:22
Quote Anchor link
Dankjewel Frank ik ga ermee aan de slag.
Database is al aangemaakt, dat kan ik wel :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.