Hoe zijn errors vanuit php te verbergen?
error_reporting(0) is erg gevaarlijk.

Als je errors krijgt dan moet je die repareren, dat kan altijd.

Er is maar 1 omstandigheid waarin error_reporting(0) toegestaan is en dat is wanneer je script in productie gaat, om te voorkomen dat potentiele hackers via foutmeldingen meer informatie over je scripts kunnen krijgen.

In ALLE andere omstandigheden ben je gewoon dom als je de raportage uitzet. Dom of onkundig.
Inderdaad want errors vertragen gans uwen boel.
Ik toon het script wel:

<?php
error_reporting(0);

include("config.php");
$controle=1;
$verstuurd=0;
if($_SERVER['REQUEST_METHOD']=='POST'){
$verstuurd=1;
if(empty($_POST['nickname'])){
$controle=0;
$wachtwoord = md5($_POST['wachtwoord']);
}
if(empty($_POST['wachtwoord'])){
$controle=0;
$nickname = $_POST['nickname'];
} else {
$nickname = $_POST['nickname'];
$wachtwoord = $_POST['wachtwoord'];
}
if($controle==1){
$wachtwoord_org = $_POST['wachtwoord'];
$wachtwoord = md5($_POST['wachtwoord']);
$bestaande_nickname = mysql_query("SELECT nickname FROM $tabel_naam WHERE nickname='".addslashes($nickname)."'");
if(mysql_num_rows($bestaande_nickname)==0){
$controle=0;
$nick_fout="Onbekende nickname";
}
if($controle==1){
$goede_ww = mysql_query("SELECT nickname FROM $tabel_naam WHERE nickname='$nickname' AND wachtwoord='$wachtwoord'");
if(mysql_num_rows($goede_ww)==0) {
$controle=0;
$ww_fout="Fout wachtwoord";
}
}
if($controle==1){
$resultaat_id = mysql_query("SELECT id FROM $tabel_naam WHERE nickname='".addslashes($nickname)."'");
$id = mysql_result($resultaat_id, 0);
}
}
}
if($verstuurd==0||$controle==0) {
?>
<html>
<head>
<title>Log-in</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form name="login" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table class=table>
<?php
if($verstuurd==1){
if(empty($_POST['nickname'])){
echo "<tr><td colspan=\"2\">".$fout_tags_open."Vul een nickname in".$fout_tags_sluit."</td></tr>";
}
if(isset($nick_fout)){
echo "<tr><td colspan=\"2\">".$fout_tags_open.$nick_fout.$fout_tags_sluit."</td></tr>";
}
}
?>
<tr>
<td><font face=verdana>Nickname:</td>
<td><input type="text" name="nickname" <?php if($verstuurd==1&&!empty($_POST['nickname'])){echo "value=\"".stripslashes(htmlentities($nickname))."\"";} ?>></td>
</tr>
<?php
if(isset($ww_fout)){
echo "<tr><td colspan=\"2\">".$fout_tags_open.$ww_fout.$fout_tags_sluit."</td></tr>";
}
if($verstuurd==1&&empty($_POST['wachtwoord'])){
echo "<tr><td colspan=\"2\">".$fout_tags_open."Vul een wachtwoord in".$fout_tags_sluit."</td></tr>";
}
?>
<tr>
<td><font face=verdana>Wachtwoord:</td>
<td><input type="password" name="wachtwoord" <?php if($verstuurd==1&&!empty($_POST['wachtwoord'])){echo "value=\"".stripslashes(htmlentities($wachtwoord_org))."\"";} ?>></td>
</tr>
<tr>
<td colspan="2"><input type="checkbox" name="onthoud"><font face=verdana>Onthoud me</td>
</tr>
<tr>
<td colspan="2"><center><input type="submit" value="Log-in">&nbsp;<input type="reset" value="Opnieuw"></center></td>
</tr>
</table>
</form>
<a href="voegtoe.php?locatie=<?php echo $locatie; ?>">Registreer</a> <a href="ww_vergeten.php"><font size="-1">Wachtwoord vergeten</font></a>.
</body>
</html>
<?php
}
if($verstuurd==1&&$controle==1){
$ingelogd=true;
if(isset($_POST['onthoud'])){
$query = "UPDATE $tabel_naam SET ingelogd=1, ip='".$_SERVER['REMOTE_ADDR']."' WHERE id='$id'";
mysql_query($query);
$id2 = $id;
for($i=0; $i<7; $i++){
$id2 = base64_encode($id2);
}
$lengte_c = strlen($id2);
$lengte_h = intval($lengte_c / 2);
$u = '';
for($i=0; $i<$lengte_h; $i++){
$u .= $id2[$i];
}
if($lengte_h==($lengte_c/2)){
$begin_pos = $lengte_c - $lengte_h;
} else {
$begin_pos = $lengte_c - $lengte_h-1;
}
$p = '';
for($i=$begin_pos; $i<$lengte_c; $i++){
$p .= $id2[$i];
}
for($i=0; $i<4; $i++){
$u = base64_encode($u);
$p = base64_encode($p);
}
setcookie("u", $u, time()+518400);
setcookie("p", $p, time()+518400);
}
$_SESSION['ingelogd'] = $ingelogd;
$_SESSION['id'] = $id;
$_SESSION['ip']= $_SERVER['REMOTE_ADDR'];
header("location: index.php");
}
?>





Doe eens een meta refresh, heb je nergens last meer van :)
op de laatste regel staat: header("location: index.php");

daarvoor heb je al boel HTML code verstuurd, header moet je gebruiken vóór je HTML code!
Daarom mijn adviesje ;)
En wil je ff kijke naar het script en zegge hoe ik na het inlogge iemand door kan sturen naar index.php?
Alvast heel erg bedankt voor de moeite! :)
echo "<script>document.location=\"index.php\"</script>":
Waar moet ik die zetten, waar die regel nu ook staat?
Of: <? echo '<meta http-equiv="refresh" content="int aantalseconden; URL=string URL">'; ?>

En ja is het antwoord op je laatste vraag :)

Reageren