Een parameter overal in code beschikbaar krijgen

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 »

Jan te Pas

Jan te Pas

19/08/2017 10:02:59
Quote Anchor link
Ik wil een parameter meegeven aan een pagina, bijvoorbeeld, test.php?id=winter
If lees de variabele uit met $seizoen = $_GET[“id”]; hoe kan ik de $seizoen overal, functies etc. Beschikbaar houden? Wellicht een domme vraag. Maar ik ben benieuwd.
 
PHP hulp

PHP hulp

30/11/2024 03:38:20
 
Adoptive Solution

Adoptive Solution

19/08/2017 10:11:36
Quote Anchor link
De variabele is net als alle andere variabelen beschikbaar zolang het script uitgevoerd/actief is.

Wat makkelijk verifieerbaar is door de variabele overal te gebruiken.
 
Jan te Pas

Jan te Pas

19/08/2017 10:35:31
Quote Anchor link
Ik ga het gewoon even testen dan. Ik dacht dat wellicht moet je een variabele als globaal defenieren om hem overal te hebben.
 
- SanThe -

- SanThe -

19/08/2017 10:45:46
Quote Anchor link
Jan te Pas op 19/08/2017 10:35:31:
Ik dacht dat wellicht moet je een variabele als globaal defenieren om hem overal te hebben.


Daarom moet je het ook niet kopiëren. De nieuwe variabele $seizoen heeft global nodig in functies, maar $_GET[“id”] is overal bekend.
 
Jan te Pas

Jan te Pas

19/08/2017 11:15:22
Quote Anchor link
Dank voor de hulp. Ik moet het gewoon gaan proberen.
 
Rob Doemaarwat

Rob Doemaarwat

19/08/2017 12:10:38
Quote Anchor link
Als je niet in elke functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
global $seizoen;
wilt doen kun je evt. nog overwegen om een functie aan te maken (die je dus overal 'zomaar' aan kunt roepen):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
function seizoen(){
  return $_GET["id"];
  //of: return array_key_exists("id",$_GET) ? $_GET["id"] : null; //check eerst of parameter wel bestaat, anders null
  //of (PHP 7): return $_GET["id"] ?? null; //dito, maar nu ingebouwd in PHP
}
Gewijzigd op 19/08/2017 12:11:32 door Rob Doemaarwat
 
Jan te Pas

Jan te Pas

19/08/2017 13:30:30
Quote Anchor link
Ik heb de volgende code gemaakt om te testen. Wat gaat er fout:
Als ik de eerste keer de aanroep doe, dan wordt om een wachtwoord gevraagd, vervolgens wordt de parameter niet goed opgenomen
Als ik ingelogd ben geweest, er staat dan een cookie, dan wordt wel de parameter gebruikt.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?
// Test tips calender voor insiders
// test met seizoenstips.php?id=winter
//dan krijg je tips van het desbetreffende seizoen
//

//Use this only if you want to password protect your tips.

$password="2017-tips";

/*
*/

// Initialize variables

$password_hash=md5($password);
$error="";
$success="";
$display_message="";
$file_ext=array();
$password_form="";

// If a password is set, they must login to view tips
If($password) {
    //Verify the credentials.
    If($_POST['verify_password']==true) {
        If(md5($_POST['check_password'])==$password_hash) {
            setcookie("vakUploader",$password_hash);
            sleep(1); //seems to help some people.
            header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
            exit;
        }
    }


    //Show the authentication form
    If($_COOKIE['vakUploader']!=$password_hash) {
        $password_form="<form method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\">\n";
        $password_form.="\r<br>\n";
        $password_form.="<table align=\"center\" class=\"table\">\n";
        $password_form.="<tr>\n";
        $password_form.="<td width=\"100%\" class=\"table_header\" colspan=\"2\">Login, voor seizoenstips</td>\n";
        $password_form.="</tr>\n";
        $password_form.="<tr>\n";
        $password_form.="<td width=\"95%\" class=\"table_body\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wachtwoord   :   <input type=\"password\" name=\"check_password\" /></td>\n";
        $password_form.="</tr>\n";
        $password_form.="<td colspan=\"2\" align=\"center\" class=\"table_body\">\n";
        $password_form.="<input type=\"hidden\" name=\"verify_password\" value=\"true\">\n";
        $password_form.="<input type=\"submit\" value=\"  Login  \" />\n";
        $password_form.="</td>\n";
        $password_form.="</tr>\n";
        $password_form.="</table>\n";
        $password_form.="</form>\n";
    }
    
}
// If Password

// Dont allow submit if $password_form has been populated

If(($_POST['submit']==true) AND ($password_form=="")) {
    //inlezen parameter vanuit aanroep seizoentips.php?id=.      //
        $seizoen = ($_GET['id']);
    //
    //alles naar undercast zetten

    if ($seizoen !=="") {
       $seizoen = strtolower($seizoen);
    }

    // dan nu kijken wat ingevuld is...
    if ($seizoen == "lente") {
        include'lente.txt';
    }
else {
        if ($seizoen == "zomer") {
            include'zomer.txt';
        }
else
            if ($seizoen == "herfst") {
               include'herfst.txt';
            }
else {
               if ($seizoen == "winter") {
                  include'winter.txt';
               }
else {
                  include'niets.txt';
               }
            }
         }

    }


If($password_form) {
    
    Echo $password_form;
}
else {
    //<!-- htmltest; -->
        //inlezen parameter vanuit aanroep seizoentips.php?id=.      //

    $seizoen = ($_GET['id']);
    //
    //alles naar undercast zetten

    if ($seizoen !=="") {
       $seizoen = strtolower($seizoen);
    }

    // dan nu kijken wat ingevuld is...
    if ($seizoen == "lente") {
        include'lente.txt';
    }
else {
        if ($seizoen == "zomer") {
            include'zomer.txt';
        }
else
            if ($seizoen == "herfst") {
               include'herfst.txt';
            }
else {
               if ($seizoen == "winter") {
                  include'winter.txt';
               }
else {
                  include'niets.txt';
               }
            }
         }

    //?<php
}
?>



Een test staat op vakantie.pe.hu/seizoen.php?id=zomer
wachtwoord=2017-tips
Als je deze pagina oproept met parameter en je moet inloggen, dan gaat er iets niet goed
zou ik dit met de function kunnen afvangen?

Als vast dank!
 
- SanThe -

- SanThe -

19/08/2017 13:52:44
Quote Anchor link
Waar zou $_POST['submit'] vandaan moeten komen? Zit namelijk niet in het formulier.
 
Jan te Pas

Jan te Pas

19/08/2017 13:59:23
Quote Anchor link
In het formulier zit wel een <input type="submit".. Ik wil zeker zijn
 
- Ariën  -
Beheerder

- Ariën -

19/08/2017 13:59:23
Quote Anchor link
Je kan ook prima een elseif of een switch gebruiken om te kijken wat $seizoen voor waarde is.
Nu heb je een onleesbare brei aan if-else statements.

Verder is md5() ook meer echt van de tijd voor het hashen van wachtwoorden. Gebruik liever password_hash en password_verify.
Gewijzigd op 19/08/2017 13:59:58 door - Ariën -
 
Jan te Pas

Jan te Pas

19/08/2017 14:00:47
Quote Anchor link
Hi Ariën, goede tip. Ga ik doen. Maar het haalt probleem nog niet weg..
 
- SanThe -

- SanThe -

19/08/2017 14:02:41
Quote Anchor link
Jan te Pas op 19/08/2017 13:59:23:
In het formulier zit wel een <input type="submit".. Ik wil zeker zijn


Ja, maar dan wel zonder name="...", dus niet in $_POST.
 
Jan te Pas

Jan te Pas

19/08/2017 14:07:32
Quote Anchor link
ohh San The.... goed gezien! Dank

Toevoeging op 19/08/2017 15:37:42:

Hallo allen,
De hash moet ik nog gaan aanpassen. Ik heb de nieuwe 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
# error reporting
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>



<?
// Test tips calender voor insiders
// test met seizoenstips.php?id=winter
//dan krijg je tips van het desbetreffende seizoen
//

//Use this only if you want to password protect your tips.

$password="2017-tips";

/*
*/

// Initialize variables

$password_hash=md5($password);
$error="";
$success="";
$display_message="";
$file_ext=array();
$password_form="";

function
seizoen(){
  return ($_GET["id"]);
  //of: return array_key_exists("id",$_GET) ? $_GET["id"] : null; //check eerst of parameter wel bestaat, anders null
  //of (PHP 7): return $_GET["id"] ?? null; //dito, maar nu ingebouwd in PHP

}

// If a password is set, they must login to view tips
If($password) {
    //Verify the credentials.
    If($_POST['verify_password']==true) {
        If(md5($_POST['check_password'])==$password_hash) {
            setcookie("vakUploader",$password_hash);
            sleep(1); //seems to help some people.
            header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
            exit;
        }
    }


    //Show the authentication form
    If($_COOKIE['vakUploader']!=$password_hash) {
        $password_form="<form method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\">\n";
        $password_form.="\r<br>\n";
        $password_form.="<table align=\"center\" class=\"table\">\n";
        $password_form.="<tr>\n";
        $password_form.="<td width=\"100%\" class=\"table_header\" colspan=\"2\">Login, voor seizoenstips</td>\n";
        $password_form.="</tr>\n";
        $password_form.="<tr>\n";
        $password_form.="<td width=\"95%\" class=\"table_body\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wachtwoord   :   <input type=\"password\" name=\"check_password\" /></td>\n";
        $password_form.="</tr>\n";
        $password_form.="<td colspan=\"2\" align=\"center\" class=\"table_body\">\n";
        $password_form.="<input type=\"hidden\" name=\"verify_password\" value=\"true\">\n";
        $password_form.="<input type=\"submit\" value=\"  Login  \" />\n";
        $password_form.="</td>\n";
        $password_form.="</tr>\n";
        $password_form.="</table>\n";
        $password_form.="</form>\n";
    }
    
}
// If Password

If($password_form) {
    Echo $password_form;
}
else {
    //<!-- htmltest; -->
    //inlezen parameter vanuit aanroep seizoentips.php?id=.      //

    $seizoen = seizoen();
        //
    //alles naar undercast zetten

    if ($seizoen !=="") {
       $seizoen = strtolower($seizoen);
    }

    // dan nu kijken wat ingevuld is...
switch ($seizoen):
    case
'lente':
        include'lente.txt';
        break;
    case
'zomer':
        include'zomer.txt';
        break;
    case
'herfst':
        include'herfst.txt';
        break;
    case
'winter':
        include'winter.txt';
    default:

       include'niets.txt';
endswitch;

}

?>


En nu toch weer hetzelfde, de parameter, id wordt niet onthouden als ik eerst het wachtwoord heb moeten invullen.

Kortom, graag jullie commentaar.
Gewijzigd op 19/08/2017 16:49:16 door Jan te Pas
 
- SanThe -

- SanThe -

19/08/2017 15:48:38
Quote Anchor link
Zet je errors eens aan.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
# error reporting
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
 
Jan te Pas

Jan te Pas

19/08/2017 15:52:04
Quote Anchor link
Gedaan, en... ik krijg op scherm:

Notice: Undefined index: verify_password in /home/u692006842/public_html/seizoen2.php on line 30
De zomertips:


Toevoeging op 19/08/2017 16:04:27:

De test staat op http://vakantie.pe.hu/seizoen3.php?id=lente
 
- Ariën  -
Beheerder

- Ariën -

19/08/2017 16:04:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
    if(isset($_POST['verify_password']) && $_POST['verify_password']==true) {


Maar verder vraag ik me af waarom je het wachtwoord in de je cookie zet? Dat is nergens voor nodig, en hackers geef je dan ook prees prijs dan ze moeten weten.

Ik zou liever een sessie maken die aangeeft dat je ingelogd bent.
Gewijzigd op 19/08/2017 16:06:56 door - Ariën -
 
Jan te Pas

Jan te Pas

19/08/2017 16:07:05
Quote Anchor link
Dus dat veroorzaakt de melding en fout? Dan moet ik er echt meer in gaan duiken. Ik leer hierdoor wel. Dank. Ariën, heb jij ook ergens op het web een voorbeeld van zo’n opzet/voorbeeld voor mij?
Gewijzigd op 19/08/2017 16:12:09 door Jan te Pas
 
- Ariën  -
Beheerder

- Ariën -

19/08/2017 16:17:10
Quote Anchor link
Kijk eens naar deze URL. Hier worden de basistechnieken van sessions uitgelegd:
https://www.w3schools.com/php/php_sessions.asp

Ik raad aan true in de sessie op te slaan als je correct ingelogd bent.
Verder vraag ik me ook af waarom je het wachtwoord vast in je script opslaat? Hoe wil je het veranderen? En hoe wil je voorkomen dat iemand die geen rechten meer heeft niet meer dit gaat raadplegen.

Is een ledensysteem met in- en uitlog geen betere optie?
 
Jan te Pas

Jan te Pas

19/08/2017 16:29:20
Quote Anchor link
Klopt, maar ik wil mij een beetje vertrouwd maken, en dit is een eerste stap. En hoop snel te leren. En wachtwoord in code is zeker niet raadzaam. Dank voor jou richting!
 
- SanThe -

- SanThe -

19/08/2017 16:36:00
Quote Anchor link
Dit moet ook een error geven:

$seizoen = seizoen;

Omdat seizoen hier als een constante wordt gezien.

Jij wilt een function aanroepen.
Dat doe je zo:

$seizoen = seizoen();
 
Jan te Pas

Jan te Pas

19/08/2017 16:40:16
Quote Anchor link
hoi San The, had ik ook al gezien. Is aangepast, maar ja....
 



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.