Я хочу выполнить tel2.php для каждого IP-адреса, который я получаю при запуске цикла for. В моем файле tel2.php есть session_start (). Следовательно, каждый раз, когда запускается скрипт цикла for, я получаю сообщение об ошибке, говоря, что сессия уже началась. Пожалуйста, объясните мне, как это исправить. Спасибо.
<?php
session_start();
include("check.php");
$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'searchrouters';
//connect with the database
$conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
// Check connection
$checkbox1=$_POST['IP'];
{
for($i=0; $i<sizeof($checkbox1);$i++){
$query="INSERT INTO checked (name) VALUES ('".$checkbox1[$i]."')";
$conn->query($query) or die(mysql_error());
$_SESSION['ipadd'] = $checkbox1[$i];
include('tel2.php');
}
}
?>
Tel2.php
<?php
session_start();
require_once "PHPTelnet.php";
$telnet = new PHPTelnet();
$telnet->show_connect_error=0;
// if the first argument to Connect is blank,
// PHPTelnet will connect to the local host via 127.0.0.1
$ipadd = $_SESSION['ipadd'];
echo $ipadd;
$result = $telnet->Connect("$ipadd",'nib2p1','nib2p1');
switch ($result) {
case 0:
$telnet->DoCommand('term length 0', $result);
echo $result;
$telnet->DoCommand('show clock', $result);
// NOTE: $result may contain newlines
echo $result;
// say Disconnect(0); to break the connection without explicitly logging out
$telnet->Disconnect();
break;
case 1:
echo '[PHP Telnet] Connect failed: Unable to open network connection';
break;
case 2:
echo '[PHP Telnet] Connect failed: Unknown host';
break;
case 3:
echo '[PHP Telnet] Connect failed: Login failed';
break;
case 4:
echo '[PHP Telnet] Connect failed: Your PHP version does not support PHP Telnet';
break;
}
?>
Действительно, как @yafater сказал в комментарии
удалить начало сессии с тел2. один раз достаточно
Чтобы быть более конкретным, я бы сказал следующее:
Два предоставленных вами файла связаны между собой, один включен в другой. Таким образом, в основном вы должны рассматривать его как один файл. Кроме того, вы не можете начать сеанс дважды, не закрывая промежуток, поэтому только один session_start()
необходимо.
Чтобы помочь вам понять, что код будет выглядеть так после того, как PHP включил файл tel2.php в первый файл:
<?php
// start session
session_start();
$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'searchrouters';
//connect with the database
$conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
// Check connection
$checkbox1=$_POST['IP'];
{
for($i=0; $i<sizeof($checkbox1);$i++){
$query="INSERT INTO checked (name) VALUES ('".$checkbox1[$i]."')";
$conn->query($query) or die(mysql_error());
$_SESSION['ipadd'] = $checkbox1[$i];
// include the file tel2.php
// session can't be started again, it's already on
require_once "PHPTelnet.php";
$telnet = new PHPTelnet();
$telnet->show_connect_error=0;
$ipadd = $_SESSION['ipadd'];
echo $ipadd;
$result = $telnet->Connect("$ipadd",'nib2p1','nib2p1');
switch ($result) {
case 0:
case 1:
case 2:
case 3:
case 4:
}
}
}
(Единственный раз, когда вам действительно нужно начать сеанс снова, это если бы вы перенаправили пользователя на Tel2.php. В этом случае он рассматривался бы как отдельный файл.)
Других решений пока нет …