simpel voorbeeld password.
Ik had een vraag over de volgende code(s),
HTML Form
<form name="download" id="download" method="post" action="download.php">
<input type="password" id="password" name="password />
<input type="submit" id="submit" value="Download" />
</form>
PHP (download.php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Wanneer ik de HTML code in een webpagina plaats, dan krijg ik keurig een invoervakje te zien om daar een password in te geven. Maar als ik niets invult en gelijk op de de password klikt krijg ik een lege webpagina te zien die mij verwijst naar file:///C:/Users/ton/Desktop/phpmap/download.php. Ik begrijp het niet.
Ik had verwacht een password in te moeten geven, zeg "318" en dat na het invullen ervan ik dan het lokale betand labeltjes.zip zou kunnen downloaden. Het zou mij enorm helpen om dit nu is een keer werkend te krijgen. Kan één van juliie mij helpen?
groeten ahc,
Of je een formulier nu invult of niet dat maakt niet uit. Na submit gaat het naar de pagina die in action=".." staat. Daar moet je dus controleren of de invoer wel valid is. Zo niet ga je terug naar het formulier.
- SanThe - op 10/11/2013 11:13:21:
Ahum, action staat ingesteld op file:///C:/Users/ton/Desktop/phpmap/download.php. Dat is een bestand in een map op het bureaublad van een Windows-gebruiker. Meestal is dat geen map die onder controle staat van een webserver die PHP kan uitvoeren.Of je een formulier nu invult of niet dat maakt niet uit. Na submit gaat het naar de pagina die in action=".." staat. Daar moet je dus controleren of de invoer wel valid is. Zo niet ga je terug naar het formulier.
De PHP daarin zal gewoon uitgevoerd gaan worden.
Ik heb het foutje al gezien: Er mist een " in <input type="password" id="password" name="password />
De header verwijst naar een local bestand en dat zal niet werken lijkt mij.
- SanThe - op 10/11/2013 11:51:08:
Nee, het PHP daarin zal niet normaal uitgevoerd worden.Nee, zie het script: action="download.php"
De PHP daarin zal gewoon uitgevoerd gaan worden.
Ik heb het foutje al gezien: Er mist een " in <input type="password" id="password" name="password />
De header verwijst naar een local bestand en dat zal niet werken lijkt mij.
De PHP daarin zal gewoon uitgevoerd gaan worden.
Ik heb het foutje al gezien: Er mist een " in <input type="password" id="password" name="password />
De header verwijst naar een local bestand en dat zal niet werken lijkt mij.
Maar we bedoelen bijna hetzelfde: als file:///C:/Users/ton/Desktop/phpmap/download.php wordt gedownload na een action="download.php", dan draait hier geen PHP. C://User/ton/Desktop/ is de standaarddirectory van het Windows-bureaublad, dus de TS'er probeert waarschijnlijk vanuit een HTML-bestand in de map /phpmap/ op zijn bureaublad een PHP-bestand in dezelfde map aan te roepen.
Vervolgens heb ik de beide betanden (het HTML betsand en de download.php verplaatst naar /XAMPP/htdocs.
Na het draaien van download.php kreeg ik de volgende melding:
Notice: Undefined index: password in C:\xampp\htdocs\download.php on line 3
Error! You do not have access to this file
what happened?
- SanThe - op 10/11/2013 11:51:08:
Ik heb het foutje al gezien: Er mist een " in <input type="password" id="password" name="password />
Wel de posts lezen graag.
Je kunt in PHP eenvoudig testen of een variabele werkelijk in het geheugen aanwezig is met de functie isset(). Daarnaast zou je moeten controleren op welke manier de request van de browser afkomt dat noemen we request method. Als de request method GET is dan weten we al dat het formulier niet verstuurd is. als Het een POST method is dan is het formulier waarschijnlijk (aanneembaar) wel verstuurd. je code zou er met mijn toevoegingen zo uit kunnen zien:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$pw = ''; // default value voor pw
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Get the password
if(isset($_POST['password']))
$pw = md5($_POST['password']);
// Compare against the stored password
$valid_pw = md5("your password you want to use");
if($pw != $valid_pw){
echo "Error! You do not have access to this file";
}else{
header("Location: C:/Users/ahc/Desktop/phpmap/labeltjes.zip");
}
}
?>
$pw = ''; // default value voor pw
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Get the password
if(isset($_POST['password']))
$pw = md5($_POST['password']);
// Compare against the stored password
$valid_pw = md5("your password you want to use");
if($pw != $valid_pw){
echo "Error! You do not have access to this file";
}else{
header("Location: C:/Users/ahc/Desktop/phpmap/labeltjes.zip");
}
}
?>
In mijn HTML code?
<input type="password" id="password" name="password />
corrigeer s.v.p. de regel voor mij.
Toevoeging op 10/11/2013 13:50:45:
Frank Nietbelangrijk,
Bij regel 15 en verder staat staat feitelijk "als het ingevoerde password je password is dan krijg je een foutmelding, en anders wordt de file gedownload. Gaat dit wel goed ?
Moet het niet $invalid_pw zijn. Pas als dan de invoer fout is met "else" dan toch verbod om te downloaden.
Ah c op 10/11/2013 13:31:52:
corrigeer s.v.p. de regel voor mij.
Kom op zeg. Zo moeilijk is het toch niet om zelf de missende " te vinden..... ?!?
Wachten op een antwoord kost je meer tijd.
Ah c op 10/11/2013 13:31:52:
Frank Nietbelangrijk,
Bij regel 15 en verder staat staat feitelijk "als het ingevoerde password je password is dan krijg je een foutmelding, en anders wordt de file gedownload. Gaat dit wel goed ?
Bij regel 15 en verder staat staat feitelijk "als het ingevoerde password je password is dan krijg je een foutmelding, en anders wordt de file gedownload. Gaat dit wel goed ?
Op regel 15 staat
Let op de ! in de code. Die staat er niet voor niets en heeft een betekenis.
Wat jij denkt dat er staat, staat er dus niet ;-)
Code (php)
Toevoeging op 10/11/2013 21:15:21:
Ah c op 10/11/2013 13:31:52:
corrigeer s.v.p. de regel voor mij.
gebruik een php editor en je zult door de kleurtjes al zien dat er een " mist.
header("Location: C:/Users/ahc/Desktop/phpmap/labeltjes.zip");
Wat doet dit in een browser?
<form name="download" id="download" method="post" action="download.php">
<input type="password" id="password" name="password" />
<input type="submit" id="submit" value="Download" />
</form>
dat deze code de download.php (die ook in de directory C:\XAMPP\htdocs) staat zou openen en dat vervolgens die code dan zou worden uitgevoerd maar dat blijkt niet het geval zijn.
Wellicht zit er iets bij de installatie van XAMPP wat ik niet goed heb gedaan. Daar werd ik geconfronteerd met een setup instelling van UAC van windows 8, en wat dat inhoudt is mij niet bekend. Afijn een lastige situatie als je niet weet wat je moet doen, zoals eerder gezegd door asterix en obelix, wachten op een antwoord kan jaren duren.
Maar toch bedankt beste forummers voor jullie geweldige hulp.
groeten ahc,
Het formulier in C:\XAMPP\htdocs\index.html
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<title>Test</title>
</head>
<body>
<form name="download" id="download" method="post" action="download.php">
<input type="password" id="password" name="password" />
<input type="submit" id="submit" value="Download" />
</form>
</body>
</html>
<head>
<title>Test</title>
</head>
<body>
<form name="download" id="download" method="post" action="download.php">
<input type="password" id="password" name="password" />
<input type="submit" id="submit" value="Download" />
</form>
</body>
</html>
Het verwerken in C:\XAMPP\htdocs\download.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Het zipje in C:\XAMPP\htdocs\labeltjes.zip
Hier getest en het werkt.
Je moet natuurlijk labeltjes.zip ergens zetten waar men normaal niet bij kan.
Gewijzigd op 11/11/2013 09:47:53 door - SanThe -
Hartelijk dank voor je uitleg en reactie, bij mij werkt het nu eindelijk ook !!.Alleen nog even uitzoeken hoe het werkt mijn website. Want ik wil namelijk de gebruiker maar één de kans geven om het bestand van mijn website te downloaden, en als hij of zij dat heeft gedaan dam moet bestand labeltjes.zip zichzelf automatisch
verwijderen of verplaatsen naar een andere map. Maar dat is natuurlijk een andere vraag.
Nogmaal forummers, heel veel dank voor jullie inbreng en advies.
groeten ahc,