Versio

require_once niet once probleem?

Overzicht Reageren

Henk

Henk

10/02/2006 14:49:00
Quote Anchor link
Hallo, ik zit al uren te '....' maar elke keer als ik op de submit button klik, keer ik telkens terug naar de login. wat doe ik fout? heel het formulier wordt steeds opnieuw geopend met login. thanks

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
require_once('login.inc.php');
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Remote</title>
</head>
<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (isset($_POST['actie']))
 {


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

    if ($actie == "Lamp 1 aan")
      {

        echo 'Lamp is aan!';
      }
 }

?>

<form method="post">
<table border="0" cellpadding="0" cellspacing="2">

<tr>
<td align="center" nowrap>
<input class="knop " name="actie" type="submit" value="Lamp 1 aan">


</td>
</tr>
</table>
</form>
</body>
</html>

---------------------------------------------------------
Login code'login.inc.php'

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
<?
// Associatieve array met gebruikers (gebruikersnaam => wachtwoord):
$gebruikers = array(
                    "Administrator" => "test",
                    "root" => "test",
                    "user" => "test"
                    // enzovoorts ...
                   );

// Gebruikersnaam en wachtwoord controleren:
if (isset($_REQUEST['gn'])) {
    // Gebruikersnaam lezen uit een formulier of cookie:
    if (isset($_POST['gn'])) {
        $gebruikersnaam = $_POST['gn'];
    }
elseif (isset($_COOKIE['gn'])) {
        $gebruikersnaam = $_COOKIE['gn'];
    }
else {
        inloggen();
    }

    $gebruikersnaam = trim(strip_tags($gebruikersnaam));
    // Controleren of de gebruikersnaam bestaat:
    if (array_key_exists($gebruikersnaam, $gebruikers)) {
        // Wachtwoord lezen uit een formulier of cookie:
        if (isset($_POST['ww'])) {
            $wachtwoord = $_POST['ww'];
        }
elseif (isset($_COOKIE['ww'])) {
            $wachtwoord = $_COOKIE['ww'];
        }
else {
            inloggen($gebruikersnaam);
        }

        $wachtwoord = trim(strip_tags($wachtwoord));
        // Het wachtwoord bij deze gebruikersnaam controleren:
        if ($gebruikers[$gebruikersnaam] == $wachtwoord) {
            // Cookie verloopt na 30 dagen = 2592000 seconden:
            $verloopt_op = time() + 2592000;
            // Gebruikersnaam opslaan in een cookie:
            setcookie("gn", $gebruikersnaam, $verloopt_op);
            // Wachtwoord naar keuze opslaan in een cookie:
            if (isset($_POST['wo'])) {
                if ($_POST['wo'] == 1) {
                    setcookie("ww", $wachtwoord, $verloopt_op);
                }
            }
        }
else {
            inloggen($gebruikersnaam);
        }
    }
else {
        inloggen($gebruikersnaam);
    }
}
else {
    inloggen();
}

 //echo "<script>location.href='remote.php'</script>";
// Webpagina met een formulier en instructies weergeven:

function inloggen($gebruikersnaam = '')
{

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="nl">
<head>
<meta http-equiv="Content-Language" content="nl">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Inloggen</title>
<link href="windows.css" rel="stylesheet" type="text/css">
</head>
<body lang="nl">
<h1>Inloggen</h1>
<p>De pagina die u probeert te openen, is uitsluitend toegankelijk voor geregistreerde gebruikers.<br>
Voer uw gebruikersnaam en wachtwoord in en klik op Inloggen.</p>
<form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_SERVER['SCRIPT_NAME']; ?>
" method="post">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td>
<label for="gn"><span style="text-decoration: underline">G</span>ebruikersnaam:</label>
</td>
</tr>
<tr>
<td><input accesskey="g" id="gn" name="gn" type="text" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $gebruikersnaam; ?>
"></td>
</tr>
<tr>
<td>
<label for="ww"><span style="text-decoration: underline">W</span>achtwoord:</label>
</td>
</tr>
<tr>
<td><input accesskey="w" id="ww" name="ww" type="password"></td>
</tr>
<tr>
<td>
<label for="wo">
<input accesskey="s" id="wo" name="wo" type="checkbox" value="1"> Wachtwoord op<span style="text-decoration: underline">s</span>laan
</label>
</td>
</tr>
<tr>
<td><input class="knop" type="submit" value="Inloggen"></td>
</tr>
</table>
</form>
</body>
</html>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    exit;

}

?>
 
PHP hulp

PHP hulp

25/05/2012 14:39:31
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Erik Rijk
Moderator

Erik Rijk

10/02/2006 15:04:00
Quote Anchor link
waar haal jij inloggen() vandaan?
 
Wes

wes

10/02/2006 15:08:00
Quote Anchor link
sowieso geen dubbele . . in je bestandsnamen.
include ("include.inc.php") vind ie nie fijn
 
PHP erik

PHP erik

10/02/2006 15:10:00
Quote Anchor link
Je hebt geen if om de require_once(), dus zal hij altijd één keer aangeroepen. Dit betekent echter niet dat als je de pagina refresht, dan ie het dan opeens niet meer request. Het gaat om "once per script".
 
Henk

Henk

10/02/2006 15:17:00
Quote Anchor link
PHPerik:
Je hebt geen if om de require_once(), dus zal hij altijd één keer aangeroepen. Dit betekent echter niet dat als je de pagina refresht, dan ie het dan opeens niet meer request. Het gaat om "once per script".


Ok, dus als ik refresch, gaat i weer opnieuw? dus dit gaat niet werken? of kan ik wat met if zoals je zegt? variabele opnemen of zo? thanks
 
Henk

Henk

10/02/2006 15:19:00
Quote Anchor link
Erik:
waar haal jij inloggen() vandaan?


Uit een boek om PHP te leren, PHP5 van easy computing. of bedoel je dit niet? gr
 
Erik Rijk
Moderator

Erik Rijk

10/02/2006 15:27:00
Quote Anchor link
Ik zie nergens de functie inloggen staan maar je roept hem wel opeens aan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
} else {
inloggen();
}

?>
 
PHP erik

PHP erik

10/02/2006 15:31:00
Quote Anchor link
@Erik
Ik denk dat je kunt aannemen dat deze functie gedefinieerd wordt in de geincludeerde file.

Toevallig las ik dezelfde vraag ook op PHPfreakz en weet ik dus dat het probleem ligt bij het feit dat topicstarter denkt dat er na een submit niet nogmaals geinclude wordt, omdat het 'require_once' is.

Oplossing:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

if ($_SERVER['REQUEST_METHOD'] != "POST")
require("blah.php");

?>
 
Henk

Henk

10/02/2006 15:34:00
Quote Anchor link
Erik:
Ik zie nergens de functie inloggen staan maar je roept hem wel opeens aan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
} else {
inloggen();
}

?>


Hier toch,
// Webpagina met een formulier en instructies weergeven:
function inloggen($gebruikersnaam = '')
{

dit werkt prima maar als ik dan in het andere PHP bestand op de button klik, krijg ik een refresh en pakt hij de inlog php ook weer opnieuw. ? gr
 
Henk

Henk

10/02/2006 15:37:00
Quote Anchor link
PHPerik:
@Erik
Ik denk dat je kunt aannemen dat deze functie gedefinieerd wordt in de geincludeerde file.

Toevallig las ik dezelfde vraag ook op PHPfreakz en weet ik dus dat het probleem ligt bij het feit dat topicstarter denkt dat er na een submit niet nogmaals geinclude wordt, omdat het 'require_once' is.

Oplossing:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

if ($_SERVER['REQUEST_METHOD'] != "POST")
require("blah.php");

?>


Ok mooi, waar mag ik dit plaatsen? thanks engr
 
Erik Rijk
Moderator

Erik Rijk

10/02/2006 15:41:00
Quote Anchor link
dat plaats je voor je if(isset($_POST[]))
 
Henk

Henk

10/02/2006 15:53:00
Quote Anchor link
Erik:
dat plaats je voor je if(isset($_POST[]))


OK Erik, dit werkt dus perfect, thanks, mijn weekend is goed(;>)
de code nu,

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Remote</title>
</head>
<body>
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

if ($_SERVER['REQUEST_METHOD'] != "POST")
require("login.php");



if (isset($_POST['actie']))
 {


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

    if ($actie == "Lamp 1 aan")
      {

        echo 'Lamp is aan!';
      }
 }

?>

<form method="post">
<table border="0" cellpadding="0" cellspacing="2">

<tr>
<td align="center" nowrap>
<input class="knop " name="actie" type="submit" value="Lamp 1 aan">


</td>
</tr>
</table>
</form>
</body>
</html>
 
Henk

Henk

10/02/2006 16:31:00
Quote Anchor link
Erik:
dat plaats je voor je if(isset($_POST[]))


Erik, dit werkt dus prima maar als ik nu op inloggen klik zonder gebruikersnaam en password in te vullen, kan ik zo naar binnen? Hij luistert niet meer naar login. Cookies waren verwijderd. met dat oude
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
require_once('login.php');
?>

gaat het wel goed maar dan het oude verhaal weer?
nog een ideetje? gr,
Gewijzigd op 10/02/2006 16:32:00 door Henk
 
Willem vp

Willem vp

11/02/2006 08:31:00
Quote Anchor link
wes:
sowieso geen dubbele . . in je bestandsnamen.
include ("include.inc.php") vind ie nie fijn
Waar heb je die kennis vandaan? In phpMyAdmin (om maar even een gek voorbeeld te noemen) wordt gebruik gemaakt van config.header.inc.php (3 punten) en dat is toch echt geen probleem...
 
Lissy Pixel

Lissy Pixel

11/02/2006 08:59:00
Quote Anchor link
Ja vroeg ik me ook af want ik zal je zeggen er rust een misverstand op de extensie inc dat dit "veilig" zou zijn of althans de ilusie opwekken.
Dus kan het idee zijn van blablabla.inc.php dat dit nog veiliger is (is een aanname want ik weet niet waarom je dit doet) of wordt gedacht.
Niets is natuurlijk minder waar en is dit net zo lek als bijv .txt om maar is wat te noemen.

Ik heb dit zo functions.inc.php in een van de eerste lessen van de cursus van Eduvision zo geleerd en daarna de uitleg van wat ik net zeg.

Enfin hier waren effies mijn nog "vroege" frisse gedachtes :)
 
Willem vp

Willem vp

11/02/2006 10:15:00
Quote Anchor link
De voornaamste reden om .inc te gebruiken in je naam lijkt me om aan te geven dat het geen op zichzelf staand script is maar altijd ge-include moet worden. Met veiligheid heeft het inderdaad niets te maken.

Wel vind ik het verstandig om in ieder geval de extensie .php te gebruiken. Als iemand dan de naam van de include-file weet en die opvraagt, zal de webserver hem eerst door PHP laten verwerken en niet zomaar de source laten zien. Op die manier hoef je niet bang te zijn dat eventuele wachtwoorden op straat komen te liggen.
 
Henk

Henk

11/02/2006 11:18:00
Quote Anchor link
Nee dat met die punten maakt niet uit. Maar ik vind het nog steeds vreemd dat ik nu zo door mijn inlogscherm heen kan klikken. zie laatste code onder. Waarschijnlijk ligt het aan <form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_SERVER['SCRIPT_NAME']; ?>
" method="POST"> in het login.php script dat het script zonder invoer wordt uitgevoerd. Als ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?
require_once("login.php");?>
boven aan zet spring ik constant terug naar de login.php. dus if ($_SERVER['REQUEST_METHOD'] != "POST")
require("login.php"); werkt prima alleen nu hoef ik alleen maar op login te klikken zonder invoer??
Nog maar eens wat uurtjes aan besteden, maar hulp is welkom. gr henk.

code dat login.php aanroept.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Remote</title>
</head>
<body>
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

if ($_SERVER['REQUEST_METHOD'] != "POST")
require("login.php");


if (isset($_POST['actie']))
 {


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

    if ($actie == "Lamp 1 aan")
      {

        echo 'Lamp is aan!';
      }
 }

?>

<form method="post"action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $_SERVER['PHP_SELF']; ?>
">
<table border="0" cellpadding="0" cellspacing="2">

<tr>
<td align="center" nowrap>
<input class="knop " name="actie" type="submit" value="Lamp 1 aan">


</td>
</tr>
</table>
</form>

</body>
</html>
----------------
login.php
----------------
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
<?
// Associatieve array met gebruikers (gebruikersnaam => wachtwoord):
$gebruikers = array(
                    "Administrator" => "test123",
                    "henk" => "test456",
                    "user" => "test789"
                    // enzovoorts ...
                   );

// Gebruikersnaam en wachtwoord controleren:
if (isset($_REQUEST['gn'])) {
    // Gebruikersnaam lezen uit een formulier of cookie:
    if (isset($_POST['gn'])) {
        $gebruikersnaam = $_POST['gn'];
    }
elseif (isset($_COOKIE['gn'])) {
        $gebruikersnaam = $_COOKIE['gn'];
    }
else {
        inloggen();
    }

    $gebruikersnaam = trim(strip_tags($gebruikersnaam));
    // Controleren of de gebruikersnaam bestaat:
    if (array_key_exists($gebruikersnaam, $gebruikers)) {
        // Wachtwoord lezen uit een formulier of cookie:
        if (isset($_POST['ww'])) {
            $wachtwoord = $_POST['ww'];
        }
elseif (isset($_COOKIE['ww'])) {
            $wachtwoord = $_COOKIE['ww'];
        }
else {
            inloggen($gebruikersnaam);
        }

        $wachtwoord = trim(strip_tags($wachtwoord));
        // Het wachtwoord bij deze gebruikersnaam controleren:
        if ($gebruikers[$gebruikersnaam] == $wachtwoord) {
            // Cookie verloopt na 30 dagen = 2592000 seconden:
            $verloopt_op = time() + 2592000;
            // Gebruikersnaam opslaan in een cookie:
            setcookie("gn", $gebruikersnaam, $verloopt_op);
            // Wachtwoord naar keuze opslaan in een cookie:
            if (isset($_POST['wo'])) {
                if ($_POST['wo'] == 1) {
                    setcookie("ww", $wachtwoord, $verloopt_op);
                }
            }
        }
else {
            inloggen($gebruikersnaam);
        }
    }
else {
        inloggen($gebruikersnaam);
    }
}
else {
    inloggen();
}

 //echo "<script>location.href='remote.php'</script>";
// Webpagina met een formulier en instructies weergeven:

function inloggen($gebruikersnaam = '')
{

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="nl">
<head>
<meta http-equiv="Content-Language" content="nl">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Inloggen</title>
<link href="windows.css" rel="stylesheet" type="text/css">
</head>
<body lang="nl">
<h1>Inloggen</h1>
<p>De pagina die u probeert te openen, is uitsluitend toegankelijk voor geregistreerde gebruikers.<br>
Voer uw gebruikersnaam en wachtwoord in en klik op Inloggen.</p>
<form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_SERVER['SCRIPT_NAME']; ?>
" method="POST">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td>
<label for="gn"><span style="text-decoration: underline">G</span>ebruikersnaam:</label>
</td>
</tr>
<tr>
<td><input accesskey="g" id="gn" name="gn" type="text" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $gebruikersnaam; ?>
"></td>
</tr>
<tr>
<td>
<label for="ww"><span style="text-decoration: underline">W</span>achtwoord:</label>
</td>
</tr>
<tr>
<td><input accesskey="w" id="ww" name="ww" type="password"></td>
</tr>
<tr>
<td>
<label for="wo">
<input accesskey="s" id="wo" name="wo" type="checkbox" value="1"> Wachtwoord op<span style="text-decoration: underline">s</span>laan
</label>
</td>
</tr>
<tr>
<td><input class="knop" type="submit" value="Inloggen"></td>
</tr>
</table>
</form>
</body>
</html>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    exit;

}

?>
 



Overzicht Reageren

Get Adobe Flash player