Si deve inserire un header solo se non si invia outup al browser (hey io sono il testo prima del tag di apertura<? $a=0; ?>ciao io sono il testo dopo il tag di chiusura)cmq ho assemblato il tutto è funziona, ci sono 4 errori, tutti i codici invece di usare uno spazio ' ' usano non breaking speace, nella funzione check chi è user dal momento che non è mai definito,terzo non si deve produrre output se si deve fare un redirect, quarto aggiustato pure una variabile.
areariservata.php
Codice PHP:
<?
session_start();
if(!isset($_SESSION['utente'],$_SESSION['password'],$_SESSION['session_captchaText'])){
header('Location: index2.php');
die();
}
echo 'arrivato a destinazione';
unset($_SESSION['utente'],$_SESSION['password'],$_SESSION['session_captchaText']);
?>
index2.php completo
Codice PHP:
<?
session_start();
function check($user,$password){
include('utenti2.php');
foreach($utenti as $user_=>$password_){
if(($_POST['utente']==$user_)AND($_POST['password']==$password_)){
return true;
}
}
return false;
}
function form_login(){
echo '<form id="login" action=" ',$_SERVER['PHP_SELF'],'" method="post">
<div style="text-align:center;margin-left:auto;margin-right:auto;">
<p><img src="captcha.php" alt="captcha codice" name="captcha" width="233" height="49" id="captcha" /></p>
<p class="style10"><strong><em>*Inserisci il testo che vedi nell\'immagine:</em></strong></p>
<font color="white">
<p class="style1">
<input name="txt_captcha" type="text" id="txt_captcha" style="width:174px;height:23px" class="style5" />
<a href="index2.php">
<img alt="" src="http://forum.it.altervista.org/images/Refresh.png" width="25" height="19" class="style9"></a>
<span class="style28"><strong><a href="index2.php">refresh</a></strong></span></p>
</font>
<span class="style6"><strong><em>Utente</em></strong></span><font color="white">:<br>
<input type="text" name="utente" size="20" maxlength="255"><br>
</font>
<span class="style6"><strong><em>Password:</em></strong></span><font color="white"><br>
<input type="password" name="password" size="20" maxlength="255"><br><br>
<input type="submit" value="OK">
<br>
<br>
</div>
</form>';
}
if(isset($_POST['utente'],$_POST['password'],$_POST['txt_captcha'])){
if(check($_POST['utente'],$_POST['password'])){
$_SESSION['utente']=$_POST['utente'];
$_SESSION['password']=$_POST['password'];
if($_POST['txt_captcha']==$_SESSION["session_captchaText"])
{
header('Location: areariservata.php');
}
else
{
unset($_SESSION['utente'],$_SESSION['password'],$_SESSION['session_captchaText']);
form_login();
}
}else{
unset($_SESSION['session_captchaText']);
form_login();
}
}else{
form_login();
}
?>
captcha.PHP
Codice PHP:
<?php
session_start();
header('Content-type: image/png');
$captchaImage=imagecreatefrompng('captcha.png') or die('Cannot Initialize new GD image stream');
$captchaFont=imageloadfont('font.gdf');
$captchaText=substr(md5(uniqid('')),-9,9);
$_SESSION['session_captchaText']=$captchaText;
$captchaColor=imagecolorallocate($captchaImage,200,200,200);
imagestring($captchaImage,$captchaFont,15,5,$captchaText,$captchaColor);
imagepng($captchaImage);
imagedestroy($captchaImage);
?>
utenti2.php non devi copiare questo è solo un esempio
Codice PHP:
<?
$utenti = array('io' => 'ciao');
?>
serve solo uno sfondo per il CAPTCHA che dovrà chiamarsi chaptcha.php