page protégée par .htaccess en iframe ?

Eléphanteau du PHP | 11 Messages

15 sept. 2011, 03:54

Bonjour à tous,

Donc voilà, j'ai créé une page de redémarrage sur une machine, et sur une autre j'ai mon site.

J'ai utilisé donc un iframe pour intégrer ma page. Tout s'intègre parfaitement, mais depuis que j'ai mis un .htaccess (qui marche très bien sans l'iframe ceci dit en passant), dans la page de mon site (donc avec l'iframe) il me dit mauvais mot de passe. J'aimerais savoir comment pouvoir protéger ma page distante du site par htaccess et pouvoir y accéder depuis mon site.

Si vous n'avez pas compris (je sais, je suis très dur à comprendre :mrgreen: ), n'hésitez pas à me poser des questions.

Bonne soirée.

ViPHP
xTG
ViPHP | 7331 Messages

15 sept. 2011, 09:15

Utiliser des pseudo-frames en PHP. ;)
include_once()
require_once()

Eléphanteau du PHP | 11 Messages

15 sept. 2011, 12:43

Merci de ta réponse.

Donc j'ai essayé =>

<?php
include_once ("http://play.team-nc.fr/restart_skp/");
?>
marche pas. J'ai essayé de faire en haut de ma page un
require_once ("http://play.team-nc.fr/restart_skp/");
mais ne marche pas non plus. Comment faire ? Je suis un vrai newbie :D
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 sept. 2011, 12:49

si c'est ton site vire le http tu ne doit pas avoir d'activer l'inclusion de fichier distant.
si ce n'est pas site c'est pas gagné :)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

15 sept. 2011, 13:06

alors je vais plutôt faire un petit schéma :)

SITE WEB-------------------------------------MACHINE
page accueil------------------------page restart
Intégrer page restart dans page accueil
Sachant que page restart protégée par .htaccess

Est-ce compréhensible ? :$

Sinon je vais vous mettre les codes peut-être ?
Page Accueil
<?php
// -------------------------------------------------------------------------//
// Nuked-KlaN - PHP Portal                                                  //
// http://www.nuked-klan.org                                                //
// -------------------------------------------------------------------------//
// This program is free software. you can redistribute it and/or modify     //
// it under the terms of the GNU General Public License as published by     //
// the Free Software Foundation; either version 2 of the License.           //
// -------------------------------------------------------------------------//
if (!defined("INDEX_CHECK"))
{
    die ("<div style=\"text-align: center;\">You cannot open this page directly</div>");
}

global $nuked, $language, $user;
translate("modules/News/lang/" . $language . ".lang.php");

// Inclusion système Captcha
if (!$user)
{
    $visiteur = 0;
}
else
{
    $visiteur = $user[1];
}if ($visiteur >= 3){

 ?>
 <div id="centre">
	<div style="width:100%; height:19px;"></div>
	<div style="background-color:#ecf6f;padding:10px;border:double 4px #207bdf;width:auto;text-align:center;display:none;" id="NKmess"></div>
	<div class="news">
		<div class="titre_news">
			<h2>Page D'administration du serveur</h2>
		</div>
		<div class="cont_news" style="display: block; ">
			<div>
				<?php
					include_once ("play.team-nc.fr/restart_skp/index.php");
				?>
			</div>
		</div>
	</div>
</div>
<?php
} 
else
{
?>
<div id="centre">
	<div class="cont_news" style="display: block; ">
		<h2>Vous n'avez pas acc&egrave;s &agrave; cette page !</h2>
	</div>
</div>
<?php
}
?>
Page restart
<?php
function sendcmd($cmd){
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
  if(!($con = ssh2_connect("**.**.**.**", 22))){
    echo "fail: unable to establish connection\n";
  } else {
    if(!ssh2_auth_password($con, "**********", "***********")) {
      echo "fail: unable to authenticate\n";
    } else {
      echo "Red&eacute;marr&eacute;.";  ?>
<html>
<head>
<meta http-equiv="refresh" content="2; URL=index.php?file=Restart_skp">
</head>
</html> 
<?php
		if (!($stream = ssh2_exec ($con, $cmd ))) {
		echo "fail: unable to execute command\n";
      }
	  }
	  }
	  }


if (isset($_POST['submitted'])) {
	if ($_POST['public'] == "yes")
		sendcmd("screen -S SKP -X quit;cd /root/SKP/COD6/;screen -A -d -m -S SKP wine iw4.exe +set party_maxplayers 16 +set net_port 28965 +exec server.cfg +map_rotate;cd /root/SKP/;screen -S SKPb -X quit;screen -A -d -m -S SKPb python ./B3/b3_run.py -c ./B3/b3/conf/b3.xml");
	if ($_POST['publicb3'] == "yes")
		sendcmd("cd /root/SKP/;screen -S SKPb -X quit;screen -A -d -m -S SKPb python ./B3/b3_run.py -c ./B3/b3/conf/b3.xml");
	
	
		}
else {
  ?><div>
  
  <form method="post" action="index.php">
  <h2>Page de red&eacute;marrage :</h2>
  <input type="hidden" name="submitted" value="" />
  <h3>Public</h3>
  <input type="checkbox" name="public" value="yes" /> Red&eacute;marrer le serveur<br />
  <input type="checkbox" name="publicb3" value="yes" /> Red&eacute;marrer le B3<br />
    
    <input type="submit" value="Red&eacute;marrer" />
    </form></div>
  <?php
}
?>
Modifié en dernier par Metalzoid le 15 sept. 2011, 13:13, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 sept. 2011, 13:08

donc include_once ("restart_skp.extension");

le once est vraiment utile ?


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

15 sept. 2011, 13:15

Je viens de modifier mon message j'ai mis les codes dedans :)

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 sept. 2011, 13:48

bon je n'était pas super clair, par http j'aurais du dire ndm (nom de domain) tu n'a pas a indiquer d'url dans le script mais un chemin relatif (ou pas d'ailleurs) dans la fonction include(_once)

donc include_once ("restart_skp/index.php");

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

15 sept. 2011, 14:01

Oui mais comme c'est sur un autre nom de domaine, ça marcherais ?

la j'essaye en enlevant le .htaccess mais en remplaçant par =>
if ((isset($_POST['login']) == ($_POST['login'])) && (isset($_POST['pass']) == ($_POST['pass']))) 
{ 
le contenu de ma page et
<?php
}
	}
else
{
?>
<form action="index.php" method="post">
Login : <input type="text" name="login"><br />
Mot de passe : <input type="password" name="pass"><br />
<input type="submit" value="submit">
</form>
<?php
}
?>
Mais il ne marche pas ...
De l'aide ? :roll:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 sept. 2011, 14:11

ha bas voila tu répond à ma 1ère question : le fichier a inclure n'est pas sur ton site

php permet de ne pas autoriser l'inclusion de fichier qui ne sont pas sur le serveur, c'est le paramètre allow_url_include du php.ini.

Si la directive est modificable dans un .htaccess ou via ini_set et tu la passe a on et ça fonctionne.
d'après la doc la directive est de type PHP_INI_ALL ce qui signifique que La directive peut être modifiée n'importe où (cf http://fr.php.net/manual/fr/configurati ... .modes.php).
donc un ini_set('http://fr.php.net/manual/fr/configurati ... des.php',1) avant l'inclusion devrait résoudre ton problème.

attention au fait que ini_set n'est peu être pas disponible, dans ce cas la doc peu t'aider Comment modifier la configuration de php

si tu ne veux / peux pas le faire ainsi, il te reste a savoir ce que tu souhaite faire de ce fichier si c'est exécuter du php sur ton site pas facile (cela me fait penser qu'en cas de connexion ausgbd je ne sais pas comment cela ce comporte a tester ;) ), si c'est exploiter le contenu un fopen doit pouvoir contenu sinon voir du coté de curl ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

15 sept. 2011, 19:27

bon j'ai changé de solution. Mais gros problème.
Le site est bien sécurisé (j'utilise bien iframe) MAIS le code ne s’exécute pas.
Je vais vous mettre le code vous me direz qu'est-ce qui cloche car je trouve pas ...
<?php
 if (isset($_POST['login'], $_POST['pass']) && $_POST['login'] == "skp" && $_POST['pass'] == "skp") {

function sendcmd($cmd){
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
  if(!($con = ssh2_connect("*********", 22))){
    echo "fail: unable to establish connection\n";
  } else {
    if(!ssh2_auth_password($con, "******", "*********")) {
      echo "fail: unable to authenticate\n";
    } else {
      echo "Red&eacute;marr&eacute;.";  ?>
<html>
<head>
<meta http-equiv="refresh" content="2; URL=index.php?file=Restart_skp">
</head>
</html> 
<?php
		if (!($stream = ssh2_exec ($con, $cmd ))) {
		echo "fail: unable to execute command\n";
      }
	  }
	  }
	  }


if (isset($_POST['submitted'])) {
	if ($_POST['public'] == "yes")
		sendcmd("screen -S skp -X quit;cd /root/SKP/COD6/;screen -A -d -m -S skp wine iw4.exe +set party_maxplayers 16 +set net_port 28965 +exec server.cfg +map_rotate;cd /root/SKP/;screen -S SKPb -X quit;screen -A -d -m -S SKPb python ./B3/b3_run.py -c ./B3/b3/conf/b3.xml");
	if ($_POST['publicb3'] == "yes")
		sendcmd("cd /root/SKP/;screen -S SKPb -X quit;screen -A -d -m -S SKPb python ./B3/b3_run.py -c ./B3/b3/conf/b3.xml");
	
	
		}
else {
  ?><div>
  
  <form method="post" action="index.php">
  <h2>Page de red&eacute;marrage :</h2>
  <input type="hidden" name="submitted" value="" />
  <h3>Public</h3>
  <input type="checkbox" name="public" value="yes" /> Red&eacute;marrer le serveur<br />
  <input type="checkbox" name="publicb3" value="yes" /> Red&eacute;marrer le B3<br />
    
    <input type="submit" value="Red&eacute;marrer" />
    </form></div>
<?php
}
	}
else
{
?>
<form action="index.php" method="post">
<input type="text" name="login"><br />
<input type="password" name="pass"><br />
<input type="submit" value="Connexion">
</form>
<?php
}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 sept. 2011, 19:56

Le site est bien sécurisé (j'utilise bien iframe)
je ne vois pas le rapport entre une iframe et la sécurité O_o

quand au reste c'est quoi qui ne "marche" pas ?

est ce que la connexion ssh est bonne ?

est ce qu'il y a un message d'erreur ?

est ce que l'action est effectuée partiellement ?

a tu essayé de déboguer

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 11 Messages

15 sept. 2011, 20:34

bah en fait quand je me connectes, sa affiche bien la page pour cliquer pour redémarrer, mais quand je fait l'action, sa me renvoie directement a la page de connections ...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 sept. 2011, 20:46

Le problème vient du fait que tu ne garde pas le fait que l'identification a été faite.

il te faut donc revoir le principe de ton authentification avec un système de type "espace membre" !

@+
Il en faut peu pour être heureux ......