tu error es en la logica no en el codigo:
count($error) siempre sera mayor a cero , puesto que tendra el valor si o el valor no
cambialo a
Cita: if($error['titulo']=="si"||$error['nota']=="si")
{
}
otra cosa , para que no siemrpe te envie el mensaje de guardado mete la instruccion dentro de las llaves del else
Cita: else{
if(file_exists("mensajes.txt")){
$db=unserialize(file_get_contents("mensajes.txt")) ;
}else{
$db=array();
}}//aqui termina y lo demas se imprimira pase lo que pase
$fila=array();
$fila['titulo']=$titulo;
$fila['nota']=$nota;
$db[]=$fila;
file_put_contents("mensajes.txt",serialize($db));
echo "<h1>GUARDADO</h1>";
//aqui debe ir la llave del else