Op de website van onze vereniging kunnen leden op bepaalde delen inloggen met hun lidnummer. Ik gebruik hiervoor een script dat onder PHP 5.3 goed werkte. Na migratie van de provider naar een nieuwere versie werkt het niet meer. Ik probeer het op basis van informatie van het web aan te passen, maar het lukt me niet door gebrekkige kennis van PHP.
Het gaat om de volgende scripts

<?php
$host="localhost"; // Host name
$username="infosec"; // Mysql username
$password="XXXXXXXX"; // Mysql password
$db_name="infosec"; // Database name
$tbl_name="authen"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form

$lidnr=$_POST['lidnr'];
$postcode=$_POST['postcode'];

// To protect MySQL injection (more detail about MySQL injection)
$lidnr = stripslashes($lidnr);
$postcode = stripslashes($postcode);
$lidnr = mysql_real_escape_string($lidnr);
$postcode = mysql_real_escape_string($postcode);

$sql="SELECT * FROM $tbl_name WHERE lidnr='$lidnr' and postcode='$postcode'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_start();

$_SESSION['lidnr'] = $lidnr;
$_SESSION['postcode'] = $postcode;

header("location:login_success2.php");
}
else {
echo "U heeft een onjuist lidnummer of postcode opgegeven";
}
?>


Bij het tweede script gaat het fout ik krijg dan een lege pagina:

<?php
// Check if session is not registered , redirect back to main page.
// Put this code in first line of web page.

session_start();
if( ! isset($_SESSION['lidnr']) {
header("location:main_login.php");
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
<html>
<head>
<title>inlogformulier</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../secstyle.css" rel="stylesheet" type="text/css" media="screen">
<style type="text/css">
<!--

etc......... hier volgt een invul fomulier
- Plaats session_start() altijd helemaal bovenaan je pagina.
- Plaats de variabelen buiten quotes. Dus ipv "$var" gebruik je $var of " . $var . "
- MySQL functies worden aangeraden niet meer te gebruiken. Kijk naar MySQLi of PDO.
- Zorg voor foutafhandeling op je query zodat je weet of ie goed gaat of wat er fout gaat.
- Plaats error_reporting bovenaan je pagina om PHP errors weer te geven.
helaas, ik kom er nog niet uit. ik heb error reporting boven in de pagina gezet, maar hoe krijg ik het report? Zo te zien wordt er niets gegenereerd.

<?php
session_start();
error_reporting(E_ERROR | E_WARNING | E_PARSE);
Bouw eens foutafhandeling op je query's en ga ook stap voor stap met echo's kijken tot hoever je script wordt uitgevoerd.
bedankt ga ik doen
"Bij het tweede script gaat het fout ik krijg dan een lege pagina:"

je mist een )

if( ! isset($_SESSION['lidnr']) { <--- huidige versie
if( ! isset($_SESSION['lidnr']) ) { <--- juiste versie

Tip: ga over op mysqli ipv mysql, vanaf PHP 5.5.0 werkt dit script ook niet meer.

Reageren