Empecher iframe pour les autres sites

privily -  
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis un débutant en programmation et je suis face à un petit problème.
- J'ai sur une page --> "page1.html" <-- de mon site, une iframe.
- Cette iframe contient une autre page --> "page2.html" <--.
.
Je souhaiterai interdire les sites de faire une iframe de ma page "page2.html" en les redirigeant vers mon acceuil.
Mais que cette page reste dans son iframe (pas de redirection) pour ma page1 uniquement.
.
J'ai essayer plusieurs code en JS mais aucun de répond à ma demande (ils redirige même sur ma page /ne redirige jamais).
.
Je voudrai savoir s'il existe un script permettant de faire cela ? Si oui lequel ?
.
Merci d'avance pour votre aide !

A voir également:

3 réponses

Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   261
 
Il faut utiliser aussi un langage coté serveur (PHP par exemple) et une base de donnée.
Voila le principe :
1. La page 1 créé un enregistrement dans une base de donnée avec un numéro unique. Et affiche la page 2 avec ce numéro en argument de la requête.
2. La page 2 vérifie que l'argument passé corresponds bien à un enregistrement dans la base. Si c'est le cas, on détruit cet enregistrement et on affiche la page 2, sinon on renvoi vers la page 1.

Si quelqu'un veut afficher la page 2 en dehors de ton site, il ne pourra pas fournir de numéro d'enregistrement valide et se retrouvera donc sur la page 1.
La page 2 ne pourra pas être rafraîchi sans que la page 1 le soit.
0
privily
 
Merci pour ta réponse,

Malheureusement je pense ne pas avoir les compétences pour mettre en place une telle démarche. Je connais que peu le PHP et pas du tout le Mysql !
Connaitrez tu un exemple sur lequel je pourrai m'appuyer ?

Merci
0
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   261
 
Un début de script :
---8<--- mysql.php ---8<---
<?php
	// A renseigner avec les infos de connexion sql
	$host = 'sql.domain.com';
	$user = 'user';
	$password = 'password';
	$base = 'database';

	function connect(){
		global $host, $user, $password, $base;
		$link = mysql_connect($host, $user, $password)
			or die('Connexion impossible. '.$_SERVER['HTTP_HOST']);
		query('CREATE DATABASE IF NOT EXISTS ''.$base.''');
		query('USE ''.$base.''');
	}

	function query($sql){
		if (! $result = mysql_query($sql)){
			die ('Erreur lors de l\'execution de la requete : <B>'
				.$sql."</B><BR/>\n".mysql_error() ."\n");
		}
		return $result;
	}

?>

--->8---

---8<--- page1.php ---8<---
<?php
	//connexion sql et création éventuelle de la table de donnée
	include ('mysql.php');
	connect();
	query('CREATE TABLE IF NOT EXISTS 'verrou' ('uid' varchar(32))');
	// création d'un identifiant unique
	$uid = md5(uniqid(mt_rand(), true));
	//enregistrement dans la table
	query('INSERT INTO 'verrou' ('uid') VALUES "'.$uid.'"');
?>
Le code HTML normal, <a href="page2.php?uid=<?php echo $uid ?>">la page 2 </a>

--->8---

---8<--- page2.php ---8<---
<?php
	//récupération de la valeur du paramètre
	$uid = htmlentities(mysql_escape_string($_GET['uid']));
	
	//recherche dans la BDD
	include ('mysql.php');
	$db_result = query('SELECT TRUE FROM 'verrou' WHERE 'uid'="'.$uid.'"' );
	if (mysql_num_rows($db_result)!=1){
		//l'identifiant n'est pas dans la base
		header('Location : page1.php');
		exit;
	}
?>
Le code HTML de la page 2.

--->8---

Bonne continuation.
0
maximoto
 
Merci beaucoup pour cette explication bien détaillée, je pense pouvoir y arriver !

encore merci pour ton aide et bonne continuation !
0
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   261
 
N'oublie pas de rajouter la suppression de l'identifiant à la suite de la recherche dans la BDD...

A+
0