Dag,

Ik gebruik in dit simpel testje de methode POST om gegevens te versturen naar een PHP script, maar omdat ik de $_POST[""] variabelen te langdradig vindt wil ik deze verkorten naar een normale variabele. Als ik dat echter probeer krijg ik de melding:

Notice: Undefined index: send in C:\Inetpub\wwwroot\guestbook\index.php on line 25

Notice: Undefined index: bericht in C:\Inetpub\wwwroot\guestbook\index.php on line 26

Dit is de complete code:

[CODE]
<html>

<head>

</head>

<body>

<?PHP

echo "Gastenboek<br \><br \>"

?>

<form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">

<input type="text" name="bericht" value="<?PHP if(isset($_POST["bericht"]) and $_POST["bericht"] != "") {echo $_POST["bericht"];} ?>">

<input type="submit" name="send" value="send">

</form>

<?PHP

$send = $_POST["send"];
$bericht = $_POST["bericht"];

if(isset($send))
{
if(isset($bericht) and $bericht != "")
{
echo "Bericht verzonden!";
}
else if(isset($bericht) and $bericht == "")
{
echo "Niet alle velden zijn ingevuld!";
}
}

?>

</body>
</html>
Jij zet hier

$send = $_POST["send"];
$bericht = $_POST["bericht"];

Direct in een variable...
Je weet niet eens of ze bestaan.

<?php
if(!empty($_POST['send']) && !empty($_POST['bericht'])){
$send = $_POST['send'];
$bericht = $_POST['bericht'];
}
?>
Dan maakt ie $send en $bericht pas aan als ze ook daadwerkelijk bestaan in de post.
En je controleerd natuurlijk met isset of variabelen bestaan niet met een andere functie.



<?php
if(     isset($_POST['send']) && trim($_POST['send'])!=''
   && isset($_POST['bericht']) && trim($_POST['bericht'])!='')
  ){
    $send = $_POST['send'];
    $bericht = $_POST['bericht'];
}
?> 


Maar op bovenstaande manier worden $send en $bericht naturllijk niet gezet als de niet voldoen aan de voorwaarden zoals deze in de if is opgenomen....

een andere manier waarbij dat niet optreed:

<?php
$send = isset($_POST['send']) && trim($_POST['send'])!='' ? $_POST['send'] : '';
$bericht = isset($_POST['bericht']) && trim($_POST['bericht'])!='' ? $_POST['bericht'] : '';
?> 

Met !empty() controleert ie al of ze bestaan EN of ze niet leeg zijn.
Dan maakt ie de $send en $bericht aan.
Dat heb ik bewust gedaan omdat hij al een IF heeft in de vorm van:

if(isset($send))
ik krijg elke keer dat ik zogezegd mij verkeerd inlog een fout
Notice: Undefined index: poging in C:\\Documents and Settings\\eigenaar\\Bureaublad\\UsbWebserver\\UsbWebserver\\Root\\login.php on line 41
weet iemand wat dit kan zijn want ik weet nog niet zoveel van php

dit is alvast mijn code:

<?php
include('config.php');
if($cfg['cronjobs'] != 1) { // Geen cronjobs ondersteund...
include('cronjobs.php');
}
if(isset($_SESSION['gebruiker'])) {
header("Location: ingelogged.php");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Inloggen</title>
</head>
<body>
<form name="form1" method="post" action="">
<table border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><input name="gebruikersnaam" type="text" id="gebruikersnaam" size="35" <?php if(isset($_GET['gebruikersnaam'])) { ?>value="<?=$_GET['gebruikersnaam']?>"<?php } ?>></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><input name="wachtwoord" type="password" id="wachtwoord" size="35"></td>
</tr>
<tr>
<td>Tijd:</td>
<td><select name="tijd" id="tijd">
<option value="3600" selected>Een uur</option>
<option value="86400">Een dag</option>
<option value="604800">Een week</option>
<option value="2678400">Een maand</option>
<option value="32140800">Een jaar</option>
<option value="32140767859200">Altijd</option>
</select>
(cookies vereist) </td>
</tr>
<tr>
</tr> <td colspan="2"><input name="poging" id="poging" type="hidden" value="<?php echo $_POST['poging']+1; ?>"><input type="submit" name="Submit" value="Inloggen"></td>
</table>
</form>
<?php if(isset($_POST['Submit'])) {
if($_POST['poging'] == $cfg['poging']+1) { // Reeds 3 pogingen achter de rug?
header("Location: wachtwoord.php");
}
$checkg = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'"),0);
$checkp = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' AND wachtwoord='".md5($_POST['wachtwoord'])."'"),0);
if($_POST['gebruikersnaam'] == "" || $_POST['wachtwoord'] == "") {
$error[] = 'Vul alle velden in!';
}
if($checkg == 0 && $_POST['gebruikersnaam'] != "") {
$error[] = 'De ingevoerde gebruikersnaam is niet geregistreerd.';
}
if($_POST['wachtwoord'] != "" && $_POST['gebruikersnaam'] != "" && $checkp == 0) {
$error[] = 'Het ingevoerde wachtwoord is niet correct.';
}
$fouten = sizeof($error); // aantal errors tellen
if($fouten != 0) { // Er is minstens 1 error
echo 'Kan niet inloggen omwille van de volgende reden(en):';
echo '<ul>';
for($i = 0; $i < $fouten; $i++) {
echo '<li>'.$error[$i].'</li>';
}
echo '</ul>';
echo 'Poging '.$_POST['poging'].' van '.$cfg['poging'];
} else {
session_start();
$res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'");
$row = mysql_fetch_assoc($res);
setcookie("gebruikersnaam",$row['gebruikersnaam'],time()+$_POST['tijd'],"/");
setcookie("wachtwoord",$row['wachtwoord'],time()+$_POST['tijd'],"/");
$_SESSION['gebruiker'] = $row['gebruikersnaam'];
$_SESSION['gid'] = $row['id'];
header("Location: ingelogged.php");
}
} ?>
</body>
</html>
Bedankt voor de antwoorden! Mijn site ****" had hetzelfde probleem.
Gelieve niet onnodig te linkspammen en oude topics omhoog te halen. Dit topic doe ik op slot.

Reageren