[php] Foutmelding 'links' is niet gedefinieerd

Pagina: 1
Acties:

  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
Ik heb een inlogsysteempje gemaakt maar ik krijg nu als ik probeer in te loggen met IE een foutmelding:

Regel 1
Teken 1
fout 'links' is niet gefinieerd
code 0

Ik zou alleen niet weten waar die fout zit. Als ik met opera inlog komt er namenlijk niks en logt hij ook goed in.

Inloggen valt te proberen met login: erik w8woord: test op de site http://the-hell.no-ip.org/

PHP:
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
<? 
$login = "0";                       // ervoor zorgen dat er geen fraude gepleegd kan worden
session_start();                    // begin een sessie
include('settings.php');            // zet de instellingenfile erin (waar de dbnaam etc staat

if ($_SESSION[Login] != "1") {      // controleren of er al met de sessie is ingelogd, zo ja gaat hij naar regel 55 (ongeveer)
        
        mysql_connect("$dbhost","$dbuser","$dbpassword");   // hier maakt hij verbinding met de server
        mysql_select_db("$dbname");                         // en hij kiest hier zijn database uit
        
        if ($_POST[Submit]) {                               // als er op de submitknop gedrukt is voerd hij dit alles uit, anders niet.
                $_POST[voornaam] = addslashes($_POST[voornaam]);    // is nodig voor een goede werking  
                $_POST[wachtwoord] = addslashes($_POST[wachtwoord]);
            
                $Query = mysql_query("SELECT * FROM leden WHERE voornaam = '$_POST[voornaam]' AND wachtwoord = '$_POST[wachtwoord]'");
                $Results = mysql_num_rows($Query);              // controleert of de wachtwoord + gebruikersnaam in de database voorkomen. Zo ja, komt er nummer 1 uit de queery
            
                            if ($Results == '1') {                      // hij kijkt hier of er 1 uit de mysql_num_rows( is gekomen
                    
                                    session_register("Login");              // Als dat zo is zet hij hier de nummer 1 in een sessie
                              
                                    //$result1 = MySQL_query("SELECT naam, mail, site, gebruikersnaam, password, id, nieuws FROM gebruikers WHERE gebruikersnaam = '$LoginNaam'");
                              
                                    /* while($row = mysql_fetch_object($result1)) {
                                      $naam = htmlspecialchars($row->naam); 
                                      $site = htmlspecialchars($row->site); 
                                      $gebruikersnaam = htmlspecialchars($row->gebruikersnaam);
                                      $mail = htmlspecialchars($row->mail);
                                      $password = htmlspecialchars($row->password);
                                      $id = htmlspecialchars($row->id);  
                                      $nieuws = htmlspecialchars($row->nieuws); 
                                    }
                                    */
                                    /* session_register("naam");
                                    session_register("site");
                                    session_register("gebruikersnaam");
                                    session_register("mail");
                                    session_register("password");
                                    session_register("id");
                                    session_register("nieuws");
                                    */
                            
                                    
                                    ?> <script language="javascript">window.setTimeout(window.location='links.php', 0);</script> <? // hier herlaad de pagina
                                    exit;                               // en sluit alles
                                    
                            }
                            else {
                    
                                    echo " Je gebruikersnaam of password klopt niet.\n";        //Dit is de else voor als er uit de queuery geen 1 is gekomen.
                    
                            }
                    
        }
}                                                               //hier is alles afgesloten

//---------------------------------------EINDE INLOGCODE!!!!!-----------------------------------------------------------

//---------------------------------------BEGIN HTML PAGINA!!!!--Gebruik $_SESSION[login] == "1" of != "1"---------------
?>


ik heb wat van de code geknipt ( de onderkant) Dus hij is iets korter dan het orgineel...

alvast bedankt

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
uhmmm..leeg je browser cache eens. daar gaat opera namelijk wat beter mee om dan IE

btw, hier viel m'n oog toevallig op:
code:
1
$_POST[voornaam] = addslashes($_POST[voornaam]);    // is nodig voor een goede werking

Als je iets via een formulier post worden er automatisch al slashes toegevoegd. Bedoel je niet stripslashes?

  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
dit is gedeeltelijk van de site van phpfreakz geplukt. Daar stond het in en ik weet niet wat het inhoud...

Ook op andere PC's met IE werkt hij niet

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

Erik999 schreef op 27 november 2002 @ 23:16:
dit is gedeeltelijk van de site van phpfreakz geplukt. Daar stond het in en ik weet niet wat het inhoud...

Ook op andere PC's met IE werkt hij niet
DE fout heeft imho in eerste instantie weinig met PHP te maken... Het is immers een Javascript fout. Kan je anders de relevante code posten, die je ziet als je View source doet bij de pagina?

Als je deze in HTML goed krijgt, kan je deze omzetten naar PHP.

edit:

/me heeft al een move aangevraagd naar /13 :) Ik denk dat ze je daar beter kunnen helpen..

[ Voor 11% gewijzigd door gorgi_19 op 27-11-2002 23:25 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
als ie het in de ene browser wel doet en in de andere niet dan is het duidelijk geen PHP fout. Het probleem ligt dan namelijk client-side. PHP is server-side.
Je moet dus in /13 zijn

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

tada
hier is de move :+
P&W -> W&G

Doet iets met Cloud (MS/IBM)


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

de setTimeout opdracht moet tussen quotes:
HTML:
1
window.setTimeout("window.location='links.php';", 0);

www.jurgroessen.nl


  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
Hangloozz schreef op 28 november 2002 @ 09:18:
de setTimeout opdracht moet tussen quotes:
HTML:
1
window.setTimeout("window.location='links.php';", 0);
gedaan, maar werkt evengoed niet :( dezelfde foutmelding...

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

ai, ik zie nog wat over het hoofd O-)
HTML:
1
window.setTimeout("window.location.href='links.php';", 0);

zie jij um ook? ;)

www.jurgroessen.nl


  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
veranderd, maar werkt weer niet. En na een herstart doet hij het ook niet meer in opera :(
Ik heb ff in het sessiefiletje gekeken en daar staat alleen in : !Login|
Ik weet niet of dat genoeg is...

Hij ziet wel dat het wachtwoord goed is, omdat hij met een foute inlognaam een melding geeft van fout gebruikersnaam enzo.

Hij gaat dus langs de regel :
PHP:
1
session_register("Login");


dus dan moet het eigenlijk wel werken....

[ Voor 39% gewijzigd door the-hell op 28-11-2002 12:13 ]


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

zie je wel een popup verschijnen dan?
Want ongeacht of de pagina wel of niet bestaat, dat nieuwe venster moet gewoon verschijnen, alleen dan met een 404.

www.jurgroessen.nl


  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
Hangloozz schreef op 28 November 2002 @ 12:47:
zie je wel een popup verschijnen dan?
Want ongeacht of de pagina wel of niet bestaat, dat nieuwe venster moet gewoon verschijnen, alleen dan met een 404.
er komt geen popup ofzoiets. Ik heb het nu wel weer voor elkaar gekregen dat het onder opera werkt.

Als ik nu naar de sessiefiles kijk, zien die van opera en van IE er hetzelfde uit :?

in die file zit op het eind : Login|s:1:"1"; en dat houd denk ik in dat hij nummer 1 opslaat onder Login.

En als ik dan de onderste code bekijk ( wat geknipt is van de bovenste code):

PHP:
1
2
3
4
5
6
7
        if ($_SESSION[Login] == "1") { ?>
      <p><font size="2">Welkom Erik Kok</font></p>
      <p><font size="2">Uitloggen </font></p>
      <?php } else { ?>


    <form name="form1" method="post" action="">


edit:

Zal ik anders even de hele code sturen? Misschien is het dan wat makkenlijker. Wat ik wel heb geprobeerd is, om bovenaan de file de regel: echo $_SESSION[Login]; te zetten. Wat me dan opvalt is dat hij met opera een 1 bovenin de pagina zet, en met IE zet hij niks op de pagina, net of hij het niet kan lezen ofzo, dat is ook de reden dat hij het niet doet. De foutmelding is overigens wel weg, door die verbeterde regel ;)

[ Voor 27% gewijzigd door the-hell op 28-11-2002 13:42 ]


Verwijderd

ipv dat javascript reloaden kun je beter dit gebruiken:
PHP:
1
header("Location: links.php");

dan werkt het ook zonder javascript

verder is deze bij developpen wel handig op cache problemen te voorkomen:
PHP:
1
2
3
4
5
6
7
function header_nocache() {
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");               // Date in the past
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");   // always modified
    header("Cache-Control: no-store, no-cache, must-revalidate");   // HTTP/1.1
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");                                     // HTTP/1.0
}

[ Voor 68% gewijzigd door Verwijderd op 28-11-2002 13:50 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 14:49

André

Analytics dude

HTML:
1
window.setTimeout("window.location.href='links.php';", 0);

Wat is dit nu voor iets???? Een timer met 0 sec, dat kun je beter weghalen:
HTML:
1
window.location.href = "links.php";

  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
Verwijderd schreef op 28 november 2002 @ 13:47:
ipv dat javascript reloaden kun je beter dit gebruiken:
PHP:
1
header("Location: links.php");

dan werkt het ook zonder javascript
als ik header gebruik, dan geeft hij de foutmelding:

code:
1
2
3
Warning: Cannot add header information - headers already sent by 
(output started at C:\apache\site\settings.php:1) in 
C:\apache\site\links.phpon line 45
verder is deze bij developpen wel handig op cache problemen te voorkomen:
PHP:
1
2
3
4
5
6
7
function header_nocache() {
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");               // Date in the past
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");   // always modified
    header("Cache-Control: no-store, no-cache, must-revalidate");   // HTTP/1.1
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");                                     // HTTP/1.0
}
Deze codes heb ik erin gezet op het begin van links.php en die werkt denk ik goed (er komt geen foutmelding)

Nu valt mij ook op dat als ik met opera inlog er maar 1 sessie file komt, en als ik met IE inlog komen er 2. 1 lege en 1 die hetzelfde is als die van opera. Ik denk dat hij nu die lege gebruik bij het begin, dus variable $login staat er gewoon niet in.. denk ik

[ Voor 64% gewijzigd door the-hell op 28-11-2002 14:08 ]


Verwijderd

Erik999 schreef op 28 November 2002 @ 13:55:
waar moeten die andere codes staan? Op het begin van mijn site?
headers moeten idd voordat je html output genereerd verstuurd worden.
Ik cache zelf eigenlijk alle output eerst in een $html en doe aan het einde van een script 'echo $html'.

  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
Verwijderd schreef op 28 november 2002 @ 14:03:
[...]


headers moeten idd voordat je html output genereerd verstuurd worden.
Ik cache zelf eigenlijk alle output eerst in een $html en doe aan het einde van een script 'echo $html'.
gedaan en dat werkt alvast.. maar nog steeds het probleem... :'(

Ik weet het probleem denk ik. In opera gebruikt hij steeds dezelde sessie. In explorer wordt er steeds een nieuwe aangemaakt.

Dus ik start de site op: een lege sessiefile komt.
Ik druk op submit: er komt een nieuwe sessiefile, die meteen overschreven wordt door de waardes die er in moeten.
Volgens de script moet hij dan weer refreshen en dan maakt hij weer een nieuwe lege sessiefile aan. Zodat hij niet meer leest uit de oude gemaakte.

Hoe valt dit op te lossen?

[ Voor 42% gewijzigd door the-hell op 28-11-2002 14:33 ]


Verwijderd

gooi er eens een paar echo's tegenaan om te kijken of het script echt doet, wat je denkt dat 't doet. Bijvoorbeeld:
PHP:
1
2
3
4
echo "<pre>";
print_r($_POST);
print_r($_SESSION);
echo "</pre>";

  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
Waar moet ik dat dan neerzetten?

Wat zou er dan fout kunnen zijn in de script? Hij controleerd alles goed (met foute gegevens kan je niet inloggen). Hij zet het in een sessie op mijn serverhd. maar IE maakt elke keer een nieuwe sessie aan als de browser herlaad. Hij gebruikt de oude niet :(

  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
ik heb er 1 op het begin gezet. Na submit in te klikken komt:

code:
1
2
3
4
5
6
7
8
9
10
Array
(
    [PHPSESSID] => 3914f64ac2c6446a2f625447c502ef13
    [voornaam] => erik
    [wachtwoord] => test
    [Submit] => Login
)
Array
(
)

Verwijderd

Het moet bijna wel je html code zijn, zet eerst eens een action="links.php" voor je formpje

  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
Verwijderd schreef op 28 November 2002 @ 15:52:
Het moet bijna wel je html code zijn, zet eerst eens een action="links.php" voor je formpje
helpt niet :'(

Als je mijn hele code wilt van links.php moet je het ff vragen hoor. Die is 110 regels ofzo.

Kan het niet een fout in mijn php.ini zijn, omdat ik een eigen webserver draai?


ALs ik Session_id("test") op het begin zet werkt hij wel. Nu moet er steeds hetzelfde getal komen te staan, maar wel verschillend per pc. Nu d8 ik aan een ipadres, maar dat ik wel gevaarlijk voor als er 2 ipadressen komen die gelijk zijn. Wat moet ik doen?

[ Voor 27% gewijzigd door the-hell op 28-11-2002 17:10 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Erik999 schreef op 28 november 2002 @ 15:37:
Waar moet ik dat dan neerzetten?

Wat zou er dan fout kunnen zijn in de script? Hij controleerd alles goed (met foute gegevens kan je niet inloggen). Hij zet het in een sessie op mijn serverhd. maar IE maakt elke keer een nieuwe sessie aan als de browser herlaad. Hij gebruikt de oude niet :(


Ehh.. Een van de voordelen van PHP is dat het volledig geautomatiseerd sessie-beheer heeft.. Misschien moet je daar eens gewoon gebruik van gaan maken :?

Heb de typfout maar even uit je topictitel gehaald ook ;)

  • the-hell
  • Registratie: December 2001
  • Laatst online: 14:39
Bosmonster schreef op 28 november 2002 @ 17:37:

[...]


Ehh.. Een van de voordelen van PHP is dat het volledig geautomatiseerd sessie-beheer heeft.. Misschien moet je daar eens gewoon gebruik van gaan maken :?

Heb de typfout maar even uit je topictitel gehaald ook ;)
maarja, als dat sessiebeheer niet 100% functioneerd...
Hij maakt gewoon elke keer een nieuwe sessie aan terwijl hij de oude moet gebruiken.

Bedankt :)

He! het is opgelost. Ik moest alleen in mijn php.ini een paar veranderingen doen zodat IE mijn cookies accepteerde die weer de ID's opsloeg 8)

[ Voor 13% gewijzigd door the-hell op 28-11-2002 19:47 ]

Pagina: 1