Ik gebruik onderstaand script om een registratie op te slaan in een sqlitedatabase. Werkt perfect. Echter, register_globals moet dan wel op ON staan. Mijn provider staat dat niet toe.
Heeft iemand een idee hoe ik het script kan wijzigen waardoor het ook met register_globals Off werkt?

<?php
include("inc_connect_sqlite.php");
if (!empty($_POST)){
	// Eerst controleren of inlognaam (= e-mailadres) al bestaat in database
	$email = $_POST["email"];
	$wachtwoord = $_POST["wachtwoord"];
	$query = "SELECT * from users WHERE email='$email';";
	$result = sqlite_query($db, $query) or die ("FOUT: " . sqlite_last_error());
	if (sqlite_num_rows($result) > 0) {
		// e-mailadres al aanwezig in de database, foutmelding tonen
		$tekst = "Dit e-mailadres (<b>$email</b>) bestaat al\n. 
			<a href=\"" . $_SERVER["PHP_SELF"] ."\">Opnieuw registreren</a>\n";
		die($tekst);	
	}else{
		// OK, Query opbouwen
		$query="INSERT INTO users (email, wachtwoord) ";
		$query .= "VALUES ('$email', '$wachtwoord');"; 
		$result = sqlite_query($db, $query) or die ("FOUT: " . sqlite_last_error());
		$tekst = "Bedankt voor uw aanmelding.<br> 
			U kunt nu <a href=\"loginww.php\">inloggen</a>";
		die ($tekst);
	}
}
?>

Bij voorbaat is mijn dank nu al groot.
Bram Bakker schreef op 11.11.2008 16:14
register_globals moet dan wel op ON staan

En waarom zou dat moeten?
Omdat het anders niet werkt.
Dan zal je het script moeten aanpassen. Niet de server.

Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Heb ik gedaan, maar dit heeft geen zichtbaar effect. Het emailadres en het wachtwoord worden niet opgeslagen in de database.
En de gegevens die al in de database staan, worden niet gevonden.
1. if (!empty($_POST)){ moet worden if($_SERVER['REQUST_METHOD'] == "POST"){

2. Het zou moeten werken

3. Register globals zijn hopenloos verouderd en verpesten je scripts.
1. Overzichtelijker scripten
2. Geen vars kopieren
3. Request method gebruiken
4. Doe $query gewoon in 1x
5. Geen die()!!
Ik denk dat ik al iets dichter bij de oplossing ben.
Ik gebruik de volgende code:

<?php
session_start();
?>

Dit schijnt niet te kunnen in combinatie met register_globals Off.
In plaats daarvan zou ik $HTTP_session_vars moeten gebruiken.
De paniek slaat toe.
Geen idee hoe ik dit moet doen. Jullie wel?
@Bram

Heb je bovenstaande wel gelezen?

session_start() moet je script altijd mee beginnen, geen output van enige aard voordat je dat hebt staan. (alleen het openen van php, maar dat is geen output)

Verder gebruik je voor een sessie:

$_SESSION['variabele_naam'] = 'waarde'; om waarden aan een sessie toe te kennen.
Bram Bakker schreef op 12.11.2008 09:57

Dit schijnt niet te kunnen in combinatie met register_globals Off.
In plaats daarvan zou ik $HTTP_session_vars moeten gebruiken.
De paniek slaat toe.
Geen idee hoe ik dit moet doen. Jullie wel?

ja, ik weet hoe je dit kunt doen.
klik op dit uit de steentijdperk komende script, druk dan op je toetsenbord SHIFT + DEL.
En schrijf het op nieuw en ZONDER register_globals!

nog en tip: lees wat hier boven staat!
Het zou moeten werken, maar dat doet het niet.
Ik gooi de handdoek in de ring.
Iedereen bedankt voor de reacties. PHP is not my cup of tea!

Reageren