Variabelen meenemen naar volgend scherm

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George van Baasbank

George van Baasbank

06/06/2011 19:17:55
Quote Anchor link
Hasllo allemaal,

Mijn pagina's zijn nu bijna af maar ik blijf zitten met het volgende probleem:

- In mijn login.php laat ik de gebruiker inloggen en leg daar zijn naam vast door data uit de database op te vragen en samen te voegen. Mijn login.php begint met en SESSION_START. Volgens mijn informatie zouden variabelen hierdoor "meegenomen"naar de volgende pagina's.
Dat blijkt ook wel zo te zijn want op de eerstvolgende pagina, mijn menuoverzicht, wordt de inlogger met zijn naam verwelkomd. Nu wil ik zijn naam ook "meenemen" naar de volgende, gekozen, pagina's. Nu blijkt echter dat de inhoud van dezelfde variabele NIET wordt getond of meegenomen.

De vraag is dus duidelijk: Moet ik de variabelen nog ergens anders declareren of middels een (public)function steeds weer oproepen?

Degewenst kan ik de code nog bij deze vraag op het forum plaatsen.


George
 
PHP hulp

PHP hulp

19/04/2024 01:09:37
 
- SanThe -

- SanThe -

06/06/2011 19:22:05
Quote Anchor link
Altijd beginnen met session_start().
 
George van Baasbank

George van Baasbank

06/06/2011 19:35:44
Quote Anchor link
Ook bij de "volgende" pagina's?
 
Sander A

Sander A

06/06/2011 19:39:00
Quote Anchor link
Ja
 
- SanThe -

- SanThe -

06/06/2011 19:39:27
Quote Anchor link
Altijd. Zonder session_start() zal er helemaal geen session zijn.
Wel altijd maar één keer, dus niet ook nog in include()'s.
Gewijzigd op 06/06/2011 19:40:23 door - SanThe -
 
George van Baasbank

George van Baasbank

06/06/2011 19:46:55
Quote Anchor link
Omdat e.e.a. niet blijkt te werken doe ik hierbij de belangrijkste codefragmenten:

Code login.php
(Het gaat om de variabele $cVoll_naam


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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<?php

error_reporting(0);

session_start();

function
get_ip()
{

    if(@$_SERVER['HTTP_X_FORWARDED_FOR'])
    {

        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    }

    elseif(@$_SERVER['HTTP_CLIENT_IP'])
    {

        return $_SERVER['HTTP_CLIENT_IP'];
    }

    else
    {
        return $_SERVER['REMOTE_ADDR'];
    }
}


if (isset($_POST['actie'])) {
    $emailadres     = $_POST['e'];                      // E-mailadres lezen uit formulierveld 'e'
    $paswoord       = $_POST['w'];                        // Paswoord lezen uit formulierveld 'w'
    $emailadres     = trim(strip_tags($emailadres));    // HTML-tags en PHP-code verwijderen
    $paswoord       = trim(strip_tags($paswoord));        // HTML-tags en PHP-code verwijderen
    $melding        = "xx ";
    $nieuwe_pagina  = "keuzescherm mijnsjouk.php";
        
    if (strlen($emailadres) > 50) {
        $melding  = "Fout e-mail adres ";
        
    }
else {
        require_once('is_email.inc.php');      // Functie is_email() insluiten
        if (is_email($emailadres)) {           // E-mailadres controleren met de functie is_email()
            $actie = $_POST['actie'];          // Uit te voeren actie bepalen
            if ($actie === "Inloggen" ) {

                // SQL-query defini&#65533;ren:
                if ($actie == "Inloggen") {
                    $sql   = "SELECT * FROM vrijwilligers WHERE email='" . $_POST["e"] ."' AND wachtwoord='". $_POST["w"]. "' AND vrijwilliger = 'Ja'";  }
                    $ip = get_ip();
                    $sql2  = "INSERT INTO logfile ( email,ingelogd,ingang,ipadres)";
                    $sql2  .= "VALUES ('$emailadres',NOW(),'MijnSjouk','$ip');";
                

                // Constanten voor mysql_connect() insluiten:
                require_once('mysql_connect.inc.php');
                
                // Databaseverbinding openen:
                $verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die("Verbinding mislukt: " . mysql_error());
                
                // Database vrijwilligers selecteren:
                mysql_select_db("mijn database") or die("Kon de database niet openen: " . mysql_error());
                
                // Query zonder resultaatset uitvoeren:
                $result = mysql_query($sql) or die("Query mislukt: " . mysql_error());
                $row=mysql_fetch_array($result);
                if(!empty($row)){
                    $cVoll_naam = $row['roepnaam']." ".$row['tussenvoeg']." ".$row['naam'];
                    $emailadres = $_POST["e"];
                    $wachtwoord = $_POST["w"];
                    session_register("emailadres");
                    session_register("wachtwoord");
                    session_register("cVoll_naam");
          

[
/code]

In het volgend fragment is de inhoud van $cVoll_naam nog te zien:

[
code]

<
html>

<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">

<
head>
<
link rel="stylesheet" type="text/css" href="../css/sjouk.css" />
<
meta http-equiv="Content-Language" content="nl" />
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Sjouk.nl | Keuzescherm Beheer</title>
<
style type="text/css">
.
style1 {
                width: 1000px;
                border: 1px solid #FF00FF;
                background-image: url('../Html/Background.jpg');
                text-align: center;
                font-family: Arial, Helvetica, sans-serif;
                font-size: smaller;
}
<
/style>
<
base target="_self" />
<
/head>

<
body style="margin-left: 0px; margin-top: 0px">

<
table align="center" width="1000" border="0">
    <
tr>
        <
td align="center" class="header_overzicht">[code]<?php echo "Welkom ".$cVoll_naam ;?>
</td>
    </tr>
</table>



In de hierna gekozen pagina's is de variabele $cVoll_naam niet (meer) te zien



<?php

/**
 * @author George van Baasbank
 * @copyright 2011
 */


session_start();

if (isset($_POST['actie'])) {
    
    $emailadresww   = $_POST['loginnaam'];                  // E-mailadres lezen uit formulierveld (loginnaam)
    $paswoordoud    = $_POST['oud_wachtwoord'];                // Oude paswoord lezen uit formulierveld (oud_wachtwoord)
    $paswoordnieuw  = $_POST['nw_wachtwoord'];              // Nieuwe paswoord lezen uit formulierenveld (nw_wachtwoord))

    $emailadresww   = strip_tags(trim($emailadresww));        // HTML-tags, psatie en PHP-code verwijderen
    $paswoordoud    = strip_tags(trim($paswoordoud));        // HTML-tags, psatie en PHP-code verwijderen
    $paswoordnieuw  = strip_tags(trim($paswoordnieuw));     // HTML-tags, psatie en PHP-code verwijderen

    $melding        = "xx ";
    $nieuwe_pagina  = "keuzescherm mijnsjouk.php";

    if (strlen($emailadres) > 50) {
        $melding  = "Fout e-mail adres ";

    }
else {

        require_once('is_email.inc.php');      // Functie is_email() insluiten

        if (is_email($emailadres)) {           // E-mailadres controleren met de functie is_email()

            $actie = $_POST['actie'];          // Uit te voeren actie bepalen

            if ($actie === "Wijzigen" ) {

                // SQL-query definiëren
                if ($actie == "Wijzigen") {

                    $sql   = "UPDATE vrijwilligers SET wachtwoord = '$paswoordnieuw' WHERE email = '$emailadresww' AND wachtwoord= '$paswoordoud' ";

                // Constanten voor mysql_connect() insluiten:
                require_once('mysql_connect.inc.php');
              
                // Databaseverbinding openen:
                $verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die("Verbinding mislukt: " . mysql_error());

                // Database vrijwilligers selecteren:
                mysql_select_db("md199125db167333") or die("Kon de database niet openen: " . mysql_error());

                // Query zonder resultaatset uitvoeren:
                $result = mysql_query($sql) or die("Query mislukt: " . mysql_error());

        include("$nieuwe_pagina");
                
        exit(); }
        }
        }
        }
        }

    
?>


<html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Language" content="nl" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Wijzigen wachtwoord</title>
<style type="text/css"></style>
<link rel="stylesheet" type="text/css" href="../css/sjouk.css" />
</head>

<body style="margin-left: 0px; margin-top: 0px">

<table align="center" width="1000" border="0">
    <tr>
        <td align="center" class="header_overzicht"><?php echo "Wijzigen wachtwoord van".$cVoll_naam ;?></td>
    </tr>
</table>

Gewijzigd op 06/06/2011 19:48:06 door George van Baasbank
 
- SanThe -

- SanThe -

06/06/2011 19:56:37
Quote Anchor link
Scripts zijn lek => sql-injection.
De functie session_register() is antiek, gebruik de superglobal $_SESSION.
 
George van Baasbank

George van Baasbank

06/06/2011 20:12:57
Quote Anchor link
Bedankt voor de tip over de superglobal. De variabele wordt nu meegenomen.

Ik ga nu op onderzoek om het sql-lek op te sporen
 
- SanThe -

- SanThe -

06/06/2011 20:20:00
Quote Anchor link
Altijd alle userinput beveiligen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$sql
   = "SELECT *
        FROM vrijwilligers
        WHERE email='"
. mysql_real_escape_string($_POST["e"]) ."'
        AND wachtwoord='"
. md5($_POST["w"]). "'
        AND vrijwilliger = 'Ja'
        "
;
?>

Wachtwoord is hier beveiligd met md5().

Deze beveiliging moet je in alle query's doen.
Gewijzigd op 06/06/2011 20:21:12 door - SanThe -
 
Dennis meijer

dennis meijer

06/06/2011 20:20:42
Quote Anchor link
@George

Kijk hier maar even naar en gebruik dat in je scripts

Mysql_real_escape_string
 
George van Baasbank

George van Baasbank

06/06/2011 20:30:40
Quote Anchor link
Dennis en SanThe,

Bedankt voor jullie support en kennis. Ik ga er mee aan de slag


George



Toevoeging op 07/06/2011 15:49:05:

SanThe,

Ik heb jouw code gebruikt in mijnroutine om het wachtwoord te wijzigen en op te slaan en gebruikt in mijn inlogscript.

Nu kan ik echter niet meer inloggen. Kijk ik in de database dan zie ik wel een versleuteld wachtwoord maar vanuit mijn inlogscript kan ik er niet meer bij.

De codes zijn achtereenvolgend van mijn inlogscript en het script voor het wijzigen van het wachtwoord. (Wellicht is de syntax bij het UPDATE iets anders dan bij SELECT)

Hieronder de code gebruikt in het inlogscript:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if ($actie == "Inloggen") {
                   $sql   = "SELECT * FROM vrijwilligers WHERE email='" . mysql_real_escape_string($_POST["e"]) ."'
        AND wachtwoord='". md5($_POST["w"]). "' AND vrijwilliger = 'Ja' "; }


Hieronder de code gebruikt bij het wijzigen van het wachtwoord:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if ($actie == "Wijzigen") {
                
                    $sql   = "UPDATE vrijwilligers SET wachtwoord = '".md5($paswoordnieuw)."' WHERE email = '$emailadresww' AND wachtwoord= '$paswoordoud' ";
Gewijzigd op 07/06/2011 15:50:36 door George van Baasbank
 



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.