'Wachtwoord vergeten' werkt niet (resetten)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer / Java 8 / Angular / Docker / Autom

Functieomschrijving Wil jij als Java Developer aan de slag bij een internationaal bedrijf die cutting edge applicaties ontwikkeld voor de automotive branche? Ga je graag aan de slag met technieken als Java 8, Java EE7, Docker, Angular en wil je graag direct een lease auto krijgen? Lees dan snel verder! Ontwikkelen van cutting edge applicaties met o.a. Java 8, Java EE7, Angular en Docker; Verantwoordelijk vanaf het in kaart brengen van requirements tot de daadwerkelijke technische oplossing; Meedenken over architectuur; Assisteren van technische implementaties bij klanten; Overleggen met analisten, testers, architecten en consultants. Functie-eisen Minstens 2 jaar ervaring als Java

Bekijk vacature »

Technisch Ontwerper / Applicatieontwikkelaar max.

Wie zoeken we? Je bent de beste in je vak of hebt de ambitie en de potentie om de beste te worden. Je hebt de passie om nieuwe technologieën te blijven leren en continu jezelf te ontwikkelen. Je hebt de pioniersgeest en drive om nieuwe technologieën, methodieken en concepten toe te passen in projecten en bij klanten. Je vindt het leuk om kennis te delen met collega’s, klanten en vakgenoten. Je bent een ware professional en ambassadeur voor CIMSOLUTIONS. Je voelt je thuis in een informele, collegiale en professionele sfeer waar de aandacht voor de klant en voor de medewerker

Bekijk vacature »

Embedded Developer / Medior / Autonome auto

Functieomschrijving Ben jij een Embedded Developer met een passie voor techniek? Heb jij ervaring binnen embedded realtime systemen en ontwikkel jij het liefst zo low level mogelijk? Lees dan snel verder! Het programmeren en modificeren van embedded software; Het omzetten van wensen, problemen en vragen naar concrete software oplossingen; Analyseren van klantrequirements om zo tot ontwerpeisen te komen; Het werken in projectteams; Het verlenen van service voor de ontwikkelde embedded software. Functie-eisen Hbo werk- en denkniveau; Een afgeronde technische opleiding is een pre; Minimaal 2 jaar relevante werkervaring als embedded developer; Kennis van programmeertalen gericht op embedded software (C); Kennis

Bekijk vacature »

Senior C#.Net / Ontwikkelaar / Developer / Softwar

Functieomschrijving C#.Net / Ontwikkelaar / Developer / Software Engineer Ontwerpen van nieuwe applicaties; Herschrijven van bestaande applicaties; Meedraaien in uitdagende projecten; Code reviewen; Communiceren met de business. Functie-eisen Afgeronde HBO opleiding richting Informatica of vergelijkbaar; Minimaal 8 jaar ervaring als Fullstack Software Engineer; Ervaring met C#.Net en SQL server zijn een eis; Je hebt ervaring met het werken in een Scrum / Agile omgeving; Ervaring in het coachen van collega's; Heb je al kennis van Micrsoft Azure, dan is dit een belangrijke pré; Kennis van ASP .NET, MVC, Rest, Xamarin, XML/JSON en HTML5/CSS3 zijn mooi meegenomen. Bedrijfsomschrijving Deze organisatie is

Bekijk vacature »

Java Developer Internationaal complexe calculaties

Functieomschrijving Kom jij het best tot je recht in een creatieve omgeving en heb jij een pragmatisch instelling? Denk jij graag vijf stappen vooruit en neem je andere daarin mee? Dan pas je zeker bij dit bedrijf. Lees dus snel verder. Ontwikkelen van applicaties en nieuwe functionaliteiten in Java; Aanpassingen maken in bestaande code; Overleggen en samenwerken met architecten en Product Owners; Werken binnen een multidisciplinair Scrumteam met betrekking tot analyse, design en ontwikkeling; Samenwerken en ondersteunen van testers in het proces van automatische regressietesten. Functie-eisen Je hebt minimaal een afgeronde HBO of WO opleiding in de richting van de

Bekijk vacature »

Java developer - Utrecht

Voor één van onze klanten zijn wij op zoek naar een Java developer Onze klant is actief in het ontwikkelen van de software voor zorginstellingen. Het cliënten en patienten dossier wat onze klant levert, wordt inmiddels dagelijks gebruikt door maar liefst 50 zorgaanbieders en 20.000 professionals. Ze is onderdeel van een samenwerkingsverband van drie softwareleveranciers in de zorgmarkt en zijn specialist én marktleider op dit gebied. Onze klant zelf is gevestigd in Veenendaal en focust zich op de gehandicaptenzorg, jeugdzorg en GGZ in Nederland en België. Het bedrijf is ambitieus en heeft visie: alle medewerkers dragen een echt "zorghart" met

Bekijk vacature »

Senior Front-end Developer

Senior Front-end Developer bij Capgemini Bij Capgemini bouwen we niet zomaar webapplicaties en mobiele apps waar onze opdrachtgevers en hun klanten mee overweg kunnen. Nee, we ontwikkelen applicaties voor miljoenen gebruikers en dan ook nog apps waar men écht gelukkig van wordt. Van de medewerkers in de organisatie zelf tot aan de eindgebruikers. En als Senior Front-end Developer ben jij hierbij onmisbaar! De rol Van het bouwen van nieuwe functionaliteiten, het behouden, bewaken en verbeteren van de huidige infrastructuur en applicaties tot aan het ontwikkelen van nieuwe innovaties. Als Front-end Developer ben je de lead developer binnen jouw scrumteam en

Bekijk vacature »

Masterclass Data engineering

Data Talent Program: Data Engineer - start 1 april 2020 Plaats: Rotterdam, Zuid-Holland, Nederland Position ID: J1219-1154 Type dienstverband:Full Time Is het werken met veel verschillende databronnen en systemen jouw ding? Vind je het leuk al die data toegankelijk en bruikbaar te maken om innovatieve, advancedanalytics projecten te kunnen uitvoeren voor heel veel verschillende soorten klanten waar CGI voor werkt? Dan ben jij ongetwijfeld het nieuwsgierige data-talent dat wij graag verwelkomen in ons Emerging Technologies team. Wat ga je doen? Op 1 april a.s. starten we in samenwerking met het Havenbedrijf Rotterdam het Data Talent Development Program voor data experts.

Bekijk vacature »

Fullstack Developer Angular 6 Java Complexe omgevi

Functieomschrijving Ben jij toe aan een nieuwe uitdaging binnen een complexe technische omgeving en wil jij met je ruime kennis van Java bijdragen aan een optimaal wegennet? Dan is dit de vacature voor jou! Ontwikkelen van innovatie applicaties met behulp van Angular 6 & Java; Overleggen en samenwerken met architecten en Product Owners; Werken binnen een multidisciplinair Scrumteam met betrekking tot analyse, design en ontwikkeling; Samenwerken en ondersteunen van testers in het proces van automatische regressietesten. Functie-eisen Afgeronde HBO- opleiding (Technische richting is een pre); Minimaal 2 jaar relevante werkervaring als Fullstack Developer; Een passie voor techniek en programmeren; Technologieën,

Bekijk vacature »

Senior Frontend ontwikkelaar met een Data voor pas

Functieomschrijving Je bent een van de belangrijkere spelers in de organisate en je houdt je bezig met het volledige software development department. Je bent samen met je team verantwoordelijk voor de vele software die aangeboden wordt. Wat het werk leuk maakt is dat geen dag hetzelfde is: je werkt intensief samen met alle stakeholders in de organisatie en met name de CTO en Manager Products. De perfecte kandidaat heeft een aantal jaren ervaring als Frontend ontwikkelaar en weet te werken met JavaScript, NodeJS, React, Vue, HTML, CSS etc. Je bent bezig met architectuur, nieuwbouw, bouwt daarnaast ook databases en gaat

Bekijk vacature »

Full stack software .NET C# developer, domotica me

Voor een bedrijf in de regio Hendrik Ido Ambacht zijn we op zoek naar een fullstack .NET C#developer. Het gaat hier om een bedrijf dat systemen ontwikkeld die via domotica oplossing bieden voor maatschappelijke instellingen. Zo verwerken hun systemen meldingen waarover ze rapporteren, maar ook zorgen ze voor de automatisering van toezicht. Het systeem bestaat uit apps, web interfaces, backend en BI rapportage tools. Het gaat het hier om een MKB bedrijf van circa 70 mensen met een team van 5 developers. Bestaande uit hardware, embedded en backend developers. Momenteel is er daarom sterke behoefte aan iemand die zowel back-

Bekijk vacature »

.NET Developer Zorg-ICT

Wil jij met ChipSoft impact maken in de zorg met jouw technische kennis als Software Developer? En lijkt het jou uitdagend om innovatieve software te ontwikkelen met de laatste Microsoft-tools en technieken? Wat doe jij als Software Developer? Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van jouw eigen module. Dit gaat om complexe ICT-producten die feilloos moeten functioneren binnen de complexe omgeving van een zorgorganisatie. Je werkt zelfstandig of in teamverband. ChipSoft maakt gebruik van een zelf ontwikkeld multi-tier framework. Tijdens een interne opleiding brengen wij je snel bij hoe je binnen deze architectuur je ontwikkelkunsten kunt

Bekijk vacature »

PHP developer gezocht - onderzoek applicatie

Functieomschrijving Je gaat verder ontwikkelen aan de bestaande applicatie en hier nieuwe functionaliteiten op bedenken. Omdat jij verantwoordelijk bent voor de applicatie krijg je hierin ook veel vrijheid. De collega's zijn jonge mensen in de leeftijd van 20 tot ongeveer 40 jaar en er heerst een hele ongedwongen sfeer in het bedrijf. Je mag straks 2 dagen remote vanuit huis werken als je dat zou willen. In overleg is er veel mogelijk bij dit bedrijf. We zoeken iemand met bij voorkeur 2 a 3 jaar ervaring op medior niveau. Heb jij zin om bij een leuk bedrijf verder te ontwikkelen

Bekijk vacature »

E-learningontwikkelaar

Wil jij meewerken aan de ontwikkeling van hoogwaardige leeroplossingen? En ben je in staat om jouw kennis over opleidingsmethodieken te vertalen naar trainingen? Dan is dit de perfecte uitdaging voor jou! Jouw baan Je belangrijkste taak is het ontwikkelen van e-learningmodules voor specifieke doelgroepen, het inhoudelijk meedenken over en ontwikkelen van creatieve, didactische concepten voor onze klanten. Ruim 90.000 ziekenhuismedewerkers zijn straks door jóuw producten beter in staat om hun patiënten te helpen. Jouw team Als e-learningontwikkelaar ben je onderdeel van een multidisciplinair team dat bestaat uit onderwijskundigen, e-learningontwikkelaars en technisch schrijvers. Binnen dit hechte team heeft ieder zijn eigen

Bekijk vacature »

Java Developer Digital

At KLM, we prefer to call back-end developers Java developers. It's because of our love of travel. The world we live in is changing rapidly, and as a developer, you're in the cockpit. Will you join us on a digital journey around the world? About the job What will your task be? You are the indispensable link in the big picture. Most of all, you will help make innovations a reality. For example, you can proudly stand next to the check-in that you have made possible. Because let's be honest: we are at the cutting edge of innovation, but without

Bekijk vacature »

Pagina: 1 2 volgende »

Hans De Ridder

Hans De Ridder

05/12/2017 15:02:05
Quote Anchor link
Mijn script om een wachtwoord te resetten werkt het laatste stukje niet van.
Gaat waarschijnlijk om de functie function Reset_Password.
Hij ziet het 'process' niet waardoor er geen reset plaatsvindt.
Het sturen van de email gaat prima.
De code wordt netjes opgeslagen.
Komt ook overeen met de code die per email werd opgenomen.
Er wordt netjes overgeschakeld om het nieuwe wachtwoord in te vullen.
En dan houdt het op.
Want komt if(isset($process)) niet door.
Heb al van alles geprobeerd. Maar ik vind geen vreemde zaken.
Zelfde gebeurt ook bij 'Gebruikersnaam vergeten'.

Iemand advies?
Hier belangrijkste stukken uit de scripts:

PAGINA FORGOT_PASSWORD:
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
<?php
include_once 'processes.php';
$Login_Process = new Login_Process;
$Check = $Login_Process->Forgot_Password($_GET, $_POST);
$Request = $Login_Process->Request_Password($_POST, $_POST['Request']);
$Reset = $Login_Process->Reset_Password($_POST, $_POST['Reset']);
?>

<body>
<?php
switch($Check) {
    case
"<!-- !-->":
?>

<form action= <?php echo $_SERVER['PHP_SELF']; ?> method="post">
<input name="code" type="hidden" id="code" value="<?php $_GET['code']; ?>" >
<input name="Reset" type="submit" value="Reset wachtwoord" id="Reset">
</form>
<?php
        break;
    default:

?>

<form action= <?php echo $_SERVER['PHP_SELF']; ?> method="post">
<input name="Request" type="submit" value="Verzoek email reset wachtwoord" id="Request"/>
</form>
<?php
}
?>

VERWERKING IN PROCESSES:
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
function Forgot_Password($get, $post) {
    
    $code = $_POST['code'];
    if(!$code) {
    $code = $_GET['code']; }

$code2 = $i->get(CODE);
if ($code === $code2)
{
return "<!-- !-->";
break;
}
}

function Request_Password($post, $process) {
        
    if(isset($process)) {

echo $i->set(CODE,$code);

Mail_Reset_Password($name, $code, $email);
                return "Er is een email verstuurd. Hiermee kun je het wachtwoord resetten.";
}
}

function Reset_Password($post, $process) {

        if(isset($process)) {    
$code = "";
$password_hash = $pass1;
echo $i->set(CODE,$code);
echo $i->set(PASSWORD_HASH,$password_hash);

Mail_Reset_Password_Confirmation($name, $email);
return "Wachtwoord is gewijzigd. Je kunt nu inloggen.";
}
}


Toevoeging op 05/12/2017 15:11:47:

Eindelijk gevonden na het doorlezen van mijn topic...
Was de echo vergeten bij $_GET.....
 
PHP hulp

PHP hulp

21/01/2020 02:51:10
 
Jan Koehoorn

Jan Koehoorn

05/12/2017 20:37:00
Quote Anchor link
Je kunt isset niet gebruiken om binnen een functie te kijken of een variabele buiten die functie geset is.

Je zou bovenin je script dit kunnen doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    switch(true) {
        case
isset($_POST['Reset']):
        // handel hier je reset af
        break;

        case
isset($_POST['Request']):
        // etc
        break;
    }

?>
Gewijzigd op 05/12/2017 20:39:07 door Jan Koehoorn
 
Jacco Engel

Jacco Engel

06/12/2017 08:14:19
Quote Anchor link
Quote:
Je kunt isset niet gebruiken om binnen een functie te kijken of een variabele buiten die functie geset is.


Dat gebeurt dan ook niet ;) script2:28 $process word geset als tweede argument van de functie die gecalled word in script1:6. Wat inderdaad niet weg neemt dat je even je post moet controlleren met bijvoorbeeld een print_r($_POST) op regel 3 van script 1
 
Ward van der Put
Moderator

Ward van der Put

06/12/2017 11:08:21
Quote Anchor link
Er zitten nogal wat — hoe zeg je dat aardig — opvallende ontwerpbeslissingen in deze code.

Bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$Check
= $Login_Process->Forgot_Password($_GET, $_POST);
?>


$_GET en $_POST zijn superglobals: variabelen die overal en altijd beschikbaar zijn. Die hoef je dus niet door te geven.

Dan toch maar even kijken waarom ze dan worden doorgegeven:

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
<?php
function Forgot_Password($get, $post) {
    
    $code = $_POST['code'];
    if(!$code) {
    $code = $_GET['code']; }

$code2 = $i->get(CODE);
if ($code === $code2)
{

return "<!-- !-->";
break;
}
}

?>


Hmm, onleesbaar. Eerst even fatsoeneren:

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
<?php
function Forgot_Password($get, $post)
{

    $code = $_POST['code'];
    if (!$code) {
        $code = $_GET['code'];
    }


    $code2 = $i->get(CODE);
    if ($code === $code2) {
        return "<!-- !-->";
        break;
    }
}

?>


Hé, deze functie heeft twee vereiste parameters $get en $post, maar die worden in de functie helemaal niet gebruikt! De functie gebruikt $_GET en $_POST, maar negeert $get en $post.

De functie heeft wel een object $i, maar waar komt dat dan vandaan?

Raadselachtig, maar de return "<!-- !-->"; maakt de mystiek compleet: een functie voor een vergeten wachtwoord retourneert HTML, maar wel HTML die verborgen moet blijven.

Wáárom? Nou daarom:

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
<?php
switch($Check) {
    case
"<!-- !-->":
?>

<form action= <?php echo $_SERVER['PHP_SELF']; ?> method="post">
<input name="code" type="hidden" id="code" value="<?php $_GET['code']; ?>" >
<input name="Reset" type="submit" value="Reset wachtwoord" id="Reset">
</form>
<?php
        break;
    default:

?>

<form action= <?php echo $_SERVER['PHP_SELF']; ?> method="post">
<input name="Request" type="submit" value="Verzoek email reset wachtwoord" id="Request"/>
</form>
<?php
}
?>


Dus deze magische "Sesam, open u" "<!-- !-->" betekent eigenlijk zoiets als true.

Dude…

http://commadot.com/wp-content/uploads/2009/02/wtf.png
 
- Ariën -
Beheerder

- Ariën -

06/12/2017 11:24:41
Quote Anchor link
En dan is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_SERVER['PHP_SELF']; ?>
ook nog eens veiligheidslek, omdat het een XSS mogelijk maakt.
Je kan die regel gewoon weglaten, met een lege action (action="") maak je al duidelijk dat de afhandeling van je je request in het zelfde bestand gebeurt.

Edit: Typo
Gewijzigd op 06/12/2017 12:13:31 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

06/12/2017 11:56:29
Quote Anchor link
<sidenote>Waarom noem je dit pertinent XXS? Het is XSS, niet XXS.</sidenote>

Bovenstaande code (van topicstarter) is weer min of meer een typisch voorbeeld van ik-moet-iets-doen-dus-doe-ik-alles-maar-tegelijk :). Doet me altijd denken aan Kinder surprise (maar dat zijn drie dingen!).

Logisch gezien moeten er twee (of wellicht vier) dingen gebeuren:
- het aanvragen voor het resetten van het wachtwoord (formulier + verwerking)
- het daadwerkelijk resetten van het wachtwoord (formulier + verwerking)

Scheid elk van deze stappen.

Het voordeel van het scheiden van deze stappen is in eerste instantie overzicht. Maar het maakt ook debuggen een stuk makkelijker door alles in hapklare brokken op te delen. Is er iets mis in de functionaliteit kun je vrij snel direct inzoomen op het probleem (en meestal ook de oorzaak) zonder ruis van allerlei andere functionaliteit die hier doorheen aan het jodelen is...

En als je dan je logingegevens kwijt bent (en uitgelogd bent geraakt), waar komt dan die $_GET['code'] vandaan? Curieus. (zoals TS al aangaf, code was niet volledig)
Gewijzigd op 06/12/2017 11:58:58 door Thomas van den Heuvel
 
Hans De Ridder

Hans De Ridder

06/12/2017 12:04:13
Quote Anchor link
Het raadsel komt waarschijnlijk doordat jullie niet de volledige scripting hebben.
Alles wordt netjes doorgegeven, en ook geblokkeerd wanneer ik regels weglaat.
Is weliswaar oud script wat ik helemaal omgebouwd heb.
En Arien, die regelwijIging heb ik ook wel uitgevoerd, maar even verwijdered,
Omdat daarna problemen ontstonden.
Niet daardoor dus, haha.
Bedankt voor de reacties.
 
- Ariën -
Beheerder

- Ariën -

06/12/2017 12:14:49
Quote Anchor link
Maar die case "<!-- !-->": blijft wel verwonderlijk.
 
Ozzie PHP

Ozzie PHP

06/12/2017 14:50:49
Quote Anchor link
>> Het raadsel komt waarschijnlijk doordat jullie niet de volledige scripting hebben.

Ik zou zeggen ... lees de opmerkingen van Ward nog eens heel goed door.
 
- Ariën -
Beheerder

- Ariën -

06/12/2017 15:39:06
Quote Anchor link
En verder is het niet echt gebruikelijk om echo's te returnen in een een functie/method.
Gewijzigd op 06/12/2017 15:39:22 door - Ariën -
 
Hans De Ridder

Hans De Ridder

06/12/2017 17:06:10
Quote Anchor link
Misschien dat het zo duideljker is.
Was een oude inlog/registratie class, die ik al eerder had gebruikt.
Nu niet zoveel meer van over.
Ik heb ook wel geprobeerd met wat meer zaken te verwijderen of te veranderen.
Maar zo werkt het prima....
Heb er wel beperkt aantal keren inloggen aan toe gevoegd, en beperkte IP-controle.
Werk met 1 session code. Waar oude script alle persoonlijke gegevens in sessions gooide.
En ook andere opties toegevoegd.
Registratie is grotendeels klaar.
Was nu bezig te kijken naar wijzigen zonder ingelogd te zijn (geweest).
Dat kan bijv. gebeuren bij wachtwoord vergeten.
Daar kwam ik nog wat dingen tegen.

DIT IS DE PAGINA VERGETEN WACHTWOORD
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
<?php
include_once 'processes.php';
$Login_Process = new Login_Process;
$Check = $Login_Process->Forgot_Password($_GET, $_POST);
$Request = $Login_Process->Request_Password($_POST, $_POST['Request']);
$Reset = $Login_Process->Reset_Password($_POST, $_POST['Reset']);
?>

<body>
<?php
switch($Check) {
    case
"<!-- !-->":
?>

<form action= <?php echo $_SERVER['PHP_SELF']; ?> method="post">

<div class ="right" style="margin-top:-8px; margin-right: 5px;"><a href= "#" onclick ='rename(); window.location ="main.php"'>Log In</a></div>
<h1>Reset Password</h1>
<div id ="red" <div id="red" style = "height: 30px; text-align: center;"><?php echo $Check.$Reset ?></div>

<div class="label" style="margin-left: 175px;">Nieuw wachtwoord:</div>
<div align="center"><input name="pass1" type="password" class="field" onfocus = "opmerking('min- 6-24 tekens. 1 x hoofdletter, 1 x kleine letter, 1 x cijfer')"></div>

<div class="label" style="margin-left: 175px;">Herhaal nieuw wachtwoord:</div>
<div align="center"><input name="pass2" type="password" class="field"/></div>

<input name="code" type="hidden" id="code" value="<?php echo $_GET['code']; ?>" >
<br />
<br />
<br />

<div class="right" style="margin-right: 168px;">
<input name="Reset" type="submit" value="Reset wachtwoord" id="Reset">
</div>

</form>
<?php
        break;
    default:

?>


<form action= <?php echo $_SERVER['PHP_SELF']; ?> method="post">

<div class="right" style="margin-top:-8px; margin-right: 5px;"><a href= "#" onclick ='rename(); window.location ="main.php"'>Log In</a></div>
<h1>Verzoek wachtwoord resetten</h1>
<div id="red" <div id="red" style = "height: 30px; text-align: center;"><?php echo $Check.$Request; ?></div>

<div class="label" style="margin-left: 175px;">Email Adres:</div>
<div align="center"><input name="email" type="text" class="field"  id="email" onfocus = "opmerking('Vul hier je email in waarmee je geregistreerd staat.')"><div>

<br />
<br />
<br />
<div class="right" style="margin-right: 168px;">
  <input name="Request" type="submit" value="Verzoek email reset wachtwoord" id="Request"/>
</div>
</form>
<?php
}
?>


DIT IS GEDEELTE VAN DE VERSCHILLENDE FUNCTIES IN DE CLASS:
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
function Forgot_Password($get, $post) {
    
    $code = $_POST['code'];
    if(!$code) {
    $code = $_GET['code']; }

// Hier worden de waarde $code vergeleken met de opgeslagen waarde $code2

if ($code === $code2)
{
return "<!-- !-->";
break;
}

function Request_Password($post, $process) {
        
if(isset($process)) {

// hier wordt de $code opgeslagen en email verstuurd met de $code;

}
}

function Reset_Password($post, $process) {

        if(isset($process)) {
        $code = $_POST['code'];
        $pass = $_POST['pass1'];
        $pass2 = $_POST['pass2'];

// Hier wordt de $code weer gereset in geheugen

// Hier wordt de mail verstuurd dat het wachtwoord is gewijzigd.

}
}        
Gewijzigd op 06/12/2017 17:10:34 door Hans De Ridder
 
Ben van Velzen

Ben van Velzen

06/12/2017 17:28:24
Quote Anchor link
Nogmaals: lees de opmerkingen nog eens door. Doe dat ook meteen even met de opmerkingen over espacing on output. Ik mis een hoop htmlspecialchars of htmlentities, en de genoemde PHP_SELF staat er nog steeds in.
 
- Ariën -
Beheerder

- Ariën -

06/12/2017 18:52:59
Quote Anchor link
En ik ben ook erg benieuwd naar de reden van die
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
return "<!-- !-->";


Daar kunnen we dan vast wel een gepastere oplossing voor geven.
 
Hans De Ridder

Hans De Ridder

06/12/2017 19:47:51
Quote Anchor link
Dit gedeelte zorgt er voor dat alle returns (foutmeldingen, opmerkingen, etc.)
terecht komen in de bij elke pagina aanwezige div 'red'.
Bij elke return wordt de pagina herladen.
Bij de return "<!-- !-->" gebeurt hetzelfde.
Bij het herladen wordt er weer gekeken naar $Check en wordt het andere deel getoond
van de pagina. Denk dat het zo ongeveer werkt.

Ben nu aan het studeren wat ik nu moet verstaan onder uitgangen.
Ik heb tot nu toe aangenomen dat hetgene wat ik zelf laat neerzetten in beeld
een uitgang is.
Ingangen gaan door de validatie en dan wordt het opgeslagen.
Bij het uitlezen gebruik ik dan wat code om de data schoon te maken.
Maar die interpretatie gaat niet op, merk ik aan sommige reacties.
Bovendien zijn er nogal wat (slechte) voorbeelden.
Misschien is er iemand die de pagina van het inloggen wat kan vertimmeren als voorbeeld?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$Login_Process = new Login_Process;
$Check = $Login_Process->Forgot_Password($_GET, $_POST);
$Request = $Login_Process->Request_Password($_POST, $_POST['Request']);
$Reset = $Login_Process->Reset_Password($_POST, $_POST['Reset']);
 
- Ariën -
Beheerder

- Ariën -

06/12/2017 19:55:36
Quote Anchor link
Zoals al eerder werd geopperd: $_POST en $_GET zijn superglobals, en hoef je niet speciaal beschikbaar te maken voor in een functie door ze als argument mee te geven.
 
Hans De Ridder

Hans De Ridder

06/12/2017 21:16:11
Quote Anchor link
Ik heb even snel gekeken.
Zit ook nog foutje in.
Want het nieuwe wachtwoord invullen gebeurt nu op nieuwe pagina.
Zodat er ineens twee pagina's open staan.
Het maakt wel uit of ik die regels gebruik.
Bij de $Check ging het goed.
Bij de andere wel de tweede $_POST['Request'] en $_POST[$_POST['Reset'] laten staan even.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$Check = $Login_Process->Forgot_Password();
$Request = $Login_Process->Request_Password($_POST['Request']);
$Reset = $Login_Process->Reset_Password($_POST['Reset']);

Het had tot gevolg dat de nieuwe inputs geen waardes doorgaven meer.
Verder nog niet naar de oorzaak gekeken.

Toevoeging op 07/12/2017 00:31:23:

Ik heb de data nu verwijderd.
Het zou kunnen werken.
Alleen wordt de $Request nu direct gesubmit.
Er kwam bijv. direct de melding dat de email niet ingevuld was.
Dat kan pas na het posten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$Check = $Login_Process->Forgot_Password();
$Request = $Login_Process->Request_Password();
$Reset = $Login_Process->Reset_Password();



Toevoeging op 07/12/2017 01:13:55:

Als volgt gewijzigd en werkend.
Maar nog wel met extra pagina:
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
function Forgot_Password() {
........
}

function Request_Password() {
    if(isset($_POST['Request']))
  {        
  ....
  }
}

function Reset_Password() {

        if(isset($_POST['Reset']))
  {
  ....
  }
}


EN OP DE PAGINA
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$Check = $Login_Process->Forgot_Password();
$Request = $Login_Process->Request_Password();
$Reset = $Login_Process->Reset_Password();
Gewijzigd op 06/12/2017 21:16:45 door Hans De Ridder
 
Hans De Ridder

Hans De Ridder

08/12/2017 00:01:25
Quote Anchor link
Ik heb het nu zo geregeld dat na 5 seconden de location wijzigt, waar de inlogpagina staat.
Dus dat is nu klaar.

Misschien is er nog iemand die een voorbeeld kan geven over de in- en outputs.
Lees daar verschillend over oforums.
Gaat dan over gewone forminputs.
En over de pagina's waar info gegeven wordt via de inputs
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $t ?>

Waar de een scriptje heeft vult een ander weer wat anders in.

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
// define variables and set to empty values
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

<form method="post" action="<?php echo htmlentities($_SERVER["PHP_SELF"]);?>">

PS reactie kan wat later komen... Ben paar dagen weg.
 
Ben van Velzen

Ben van Velzen

08/12/2017 00:23:03
Quote Anchor link
PHP_SELF moet je gewoon helemaal niet gebruiken, ongeacht de escaping.
De test_input functie moet je gewoon weggooien, kun je niks mee. Ook gewoon niet zoiets doen dus.
Output is alles dat naar het scherm gegooid of je database gegooid wordt. Geen enkele variabele is betrouwbaar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo 'Dit is tekst die naar de browser gaat, met een GET: ' . htmlspecialchars($_GET['test']);
$sql = "SELECT title, description FROM test WHERE id = '" . mysqli_real_escape_string($db, $_GET['test']) . "'";
// hier je query
?>

Je ziet hier al heel duidelijk waarom je je data niet onschadelijk moet proberen te maken. Verschillende doelen hebben verschillende eisen voor escaping.

Nogmaals: haal die test_input functie weg, doe zoiets NIET, NOOIT, NEVER. Alleen als je het idee al krijgt om zo'n functie te gebruiken moet je jezelf een klap geven. Stripslashes heb je sowieso nooit nodig, htmlspecialchars is alleen voor output. trim is eventueel nuttig, maar alleen voor de input waar dat voor geldt.

Input valideer je, maar muteer je niet. De enige mogelijke uitzondering is trim, maar dat is ook echt het enige. Je controleert dus of iets minimaal 3 tekens is, uit getallen bestaat, etc etc.
 
Hans De Ridder

Hans De Ridder

08/12/2017 00:39:13
Quote Anchor link
Bedankt Ben...

Begrijp ik het dan goed dat je in de form gebuikersinputs alleen valideert?
Daar worden de controles uitgevoerd waar een gegeven input aan moet voldoen.
Cijfers, letters, verboden tekens, bepaalde woorden bevattend, etc.)
En datgene wat in beeld verschijnt htmlspecialchars() doet.
En bij de $_GET ook htmlspecialchars()
En waar ergens in de form een action staat daar een htmlentities() wordt gedaan.

Ik gebruik (nog) geen gewone database.
Wel opslag van gegevens.
 
Ben van Velzen

Ben van Velzen

08/12/2017 01:04:40
Quote Anchor link
Bij alle variabelen van buitenaf pas je escaping toe bij uitvoer, of dat nu POST, GET, COOKIE of SERVER is, of een afgeleide eigen variabele (ja, $_SERVER komt van buitenaf en is daarmee dus ook niet betrouwbaar).
Voor jouw geval zul je moeten kijken welke escaping vereisten er zijn voor iptc, vermoedelijk is het helemaal niets omdat het pure metadata opslag is die niet geschikt is voor dataverwerking. Je vuurt er geen queries op af, het is puur data.

In de form kun je ook gewoon htmlspecialchars gebruiken of htmlentities, maar nog liever urlencode. Zet echter NOOIT PHP_SELF in je action, deze is te makkelijk beinvloedbaar. Wanneer je naar dezelfde pagina wilt verwijzen als waar je toch al bent gebruik je gewoon een leeg action attribuut.

Input valideer je alleen. Je controleert of het van het correcte formaat is (cijfers, letters, TOEGESTANE tekens, controleer nooit aan de hand van een blacklist maar met een whitelist). De data gaat zo ruw mogelijk naar opslag, dit kun je bij output altijd weer rechttrekken.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/12/2017 03:16:38
Quote Anchor link
Ben van Velzen op 08/12/2017 01:04:40:
$_SERVER komt van buitenaf en is daarmee dus ook niet betrouwbaar.

Toch alleen de HTTP_* directives? Of nog meer? Desalniettemin blijft het een goede gewoonte om al deze data niet te vertrouwen, en dus te escapen.

Ben van Velzen op 08/12/2017 01:04:40:
In de form kun je ook gewoon htmlspecialchars gebruiken of htmlentities, maar nog liever urlencode.

Die volg ik even niet? $_POST en $_GET worden automatische ge-urldecode(). Het enige wat je ooit zou moeten encoden zijn (keys en values) van de querystring in een URL voor de action, maar voor de rest toch niet?

Ben van Velzen op 08/12/2017 01:04:40:
Zet echter NOOIT PHP_SELF in je action, deze is te makkelijk beinvloedbaar.

Maakte iemand hier laatst geen opmerking over, dat je veel beter SCRIPT_NAME (of iets anders?) kon gebruiken, omdat deze om te beginnen al een stuk minder corrumpeerbaar was? Nog steeds escapen. Of zelf handmatig de URL opbouwen. En dan nog steeds escapen :).
 

Pagina: 1 2 volgende »



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.