Undefined index: - Undefined variable:

Screamdad

Lt. Junior Grade
Dabei seit
Jan. 2007
Beiträge
364
Guten Abend liebe Leute, ich brauche mal eine Info darüber was ich falsch mache oder denke. Vielleicht ist es auch garnicht möglich (denke ich eher) oder es ist irgend etwas was man sehen sollte (denke ich weniger).^^

Erklärung: Rufe ich die Seite direkt auf (www.xxx.de/diese.php) dann klappt es!
Aber.... Rufe ich sie (wo es soll) im Login auf (www.xxx.de/xxx/xxx/user.php?site=diese) auf dann kommt einige fehlermeldungen:

Notice: Undefined index: PHP_AUTH_USER in /var/www/web4/html/xxx/xxx/xxx/diese.php on line 22

Notice: Undefined index: PHP_AUTH_PW in /var/www/web4/html/xxx/xxx/xxx/diese.php on line 22

Notice: Undefined index: password_kick in /var/www/web4/html/xxx/xxx/xxx/diese.php on line 45

Notice: Undefined variable: cont in /var/www/web4/html/xxx/xxx/xxx/diese.php on line 105

Was muss wo geändert werden grrr...

LG Screamdad

PHP:
<?php 
$login_user        = ""; 
$login_password        = ""; 
$kick_password         = "admin"; 
$timeout        = 5;

$shoutcast_ip        = array("127.0.0.2",    "127.0.0.2"); 
$shoutcast_name        = array("Hauptstream",    "Teststream");     
$shoutcast_port        = array("8000",        "8010"); 
$shoutcast_password    = array("pw1",    "pw2"); 

if($_SERVER['PHP_AUTH_USER'] != "$login_user" || $_SERVER['PHP_AUTH_PW'] != "$login_password") {
 echo '<meta http-equiv="refresh" content="0;URL="../../403.php">';
 exit; }  ?>
<font size="2">Wähle hier deinen Stream aus:</font><br><br>
<form method="get" style="margin: 0px;">
 <select style="border: 1px solid black; border-color: #414141; color: #ADC8E3; background: #414141" name="id">

  <?php
    $id = $_REQUEST['id'];

    if(!isset($_REQUEST['id']) || $id == '') $id = 0;

    for($x=0;$x<count($shoutcast_ip);$x++) {
     if($x == $id) echo "  <option value=\"$x\" selected>".$shoutcast_name[$x]." | ".$shoutcast_ip[$x].":".$shoutcast_port[$x]."</option>\n";
     else echo "  <option value=\"$x\">".$shoutcast_name[$x]." | ".$shoutcast_ip[$x].":".$shoutcast_port[$x]."</option>\n";
    }
  ?>
 </select><br><br>
 <input onfocus="this.blur()" type="submit" name="send2" value="Auswählen" style="width: 90px;">
</form>
<br>
<?php

 $kickit = $_POST['password_kick'];

 if(isset($_POST['send'])) {

  if($kickit != "$kick_password") {

    $mess = "Password wrong. Source(s) not kicked";
    $col  = "red";

   echo "<table width=\"400\" cellpadding=\"2\">
	 <tr>
	  <td width=\"100%\" bgcolor=\"$col\"><font size=\"2\"><b>Notice</b></font></td>
	 </tr>
	 <tr>
	  <td width=\"100%\" bgcolor=\"white\" height=\"60\"><font size=\"2\">$mess</font></td>
	 </tr>
	</table><br>";
  echo "<meta http-equiv=refresh content=4;URL=".$_SERVER['PHP_SELF']."?id=$id>"; }

  else {

   if($_POST['kick_all'] ==  'true') { $start = 0; $end  = count($shoutcast_ip); }
   else  { $start = $id; $end  = $start+1; }

   for($s=$start;$s<$end;$s++)
   {
   
    $fp = @fsockopen($shoutcast_ip[$s], $shoutcast_port[$s], &$errno, &$errstr, $timeout);

    if ($fp) {
     $mess = "Source <b>".$shoutcast_ip[$s]."</b> successfully kicked.";
     $col  = "green";

     @fputs($fp,"GET /admin.cgi?pass=".$shoutcast_password[$s]."&mode=kicksrc HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n");
     @fclose($fp); }
    else {
     $mess = "Connection parameters wrong. Source <b>".$shoutcast_ip[$s]."</b> not kicked.";
     $col  = "red"; } 

   echo "<table width=\"400\" cellpadding=\"2\">
	 <tr>
	  <td width=\"100%\" bgcolor=\"$col\"><font size=\"2\"><b>Notice</b></font></td>
	 </tr>
	 <tr>
	  <td width=\"100%\" bgcolor=\"white\" height=\"60\"><font size=\"2\">$mess</font></td>
	 </tr>
	</table><br>";
  } // END FOR
  echo "<meta http-equiv=refresh content=4;URL=".$_SERVER['PHP_SELF']."?id=$id>";
 }  
}
?>

<li><font size="2"><b>Service Information:</b><br>Dieser Service wird verwendet,<br>um Ihre Shoutcast Quelle über den WebClient zu Kicken!</font><br><br>

<li><font size="2"><b>Stream Information:</b></font><br>
<?php
 $fp = @fsockopen($shoutcast_ip[$id], $shoutcast_port[$id], &$errno, &$errstr, $timeout);
 if($fp) {
  fputs($fp,"GET /admin.cgi?pass=".$shoutcast_password[$id]." HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n");
  while(!feof($fp)) { $cont .= fgets($fp, 128); }
  $cont = strip_tags($cont);
  if(ereg("Server is currently down", $cont)) { echo "<font size=\"2\"><font color=\"#FF8C00\">Der Server ist Offline und der Stream nicht in Betrieb!</font><br>Das Kicken hat <b>kein</b> Effekt!</font>"; }
  elseif(ereg("Server is currently up", $cont)) { echo "<font size=\"2\"><font color=\"#7CFC00\">Der Server ist Online und der Stream in Betrieb!</font><br>Das Kicken hat <b>einen</b> Effekt!</font>"; }
  else { echo "<font size=\"2\" color=\"#FF0000\">Unbekannter Status von Server und Stream!</font>"; }
   }
 else  echo "<font size=\"2\" color=\"#FF0000\">Keine Verbindung zum Server und Stream möglich!</font>";
?>

:(
 
Zuletzt bearbeitet:

Belee

Lt. Commander
Dabei seit
Dez. 2006
Beiträge
1.518
So sollten die Notice eigentlich verschwinden (ungetestet!)

PHP:
if(isset($_SERVER['PHP_AUTH_USER']) != "$login_user" || isset($_SERVER['PHP_AUTH_PW']) != "$login_password") { 
 echo '<meta http-equiv="refresh" content="0;URL="../../403.php">'; 
 exit; }  ?>
 

ice-breaker

Commodore
Dabei seit
Nov. 2008
Beiträge
4.133
Zitat von Belee:
So sollten die Notice eigentlich verschwinden (ungetestet!)

PHP:
isset($_SERVER['PHP_AUTH_USER']) != "$login_user"

garantiert nicht, denn isset() liefert einen boolean zurück, was dein PHP-Code macht ist also ein ganz anderes Verhalten.

So sollte es stimmen (wenn ich keine Klammer vergessen habe):
PHP:
if((isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] != $login_user) || (isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] != $login_password))
 

Screamdad

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2007
Beiträge
364
Vielen Dank für Eure Hilfe.
Letzteres Posting habe ich ausgeführt mit halben Effekt.

Nun erscheint:

Notice: Undefined index: password_kick in /var/www/web4
/xxx/xxx/xxx/xxx/diese.php on line 45

Gehört zu Zeile: $kickit = $_POST['password_kick'];

und

Notice: Undefined variable: cont in /var/www/web4
/xxx/xxx/xxx/xxx/diese.php on line 105

Gehört zu Zeile: while(!feof($fp)) { $cont .= fgets($fp, 128); }

Wie gehe ich in diesen beiden Meldungen um?

Lieben Gruss, Screamdad.

Edit: Nachricht überschnitten, teste gleich mal den letzten Posting!
-> OK BEIDE ERGEBNISSE FÜHREN ZUM GLEICHEN ERGEBNIS! Fazit: Letzte Nachricht bleibt.
 
Zuletzt bearbeitet:

ice-breaker

Commodore
Dabei seit
Nov. 2008
Beiträge
4.133
Na du musst du es ähnlich machen :rolleyes:
Die Meldung wird geworfen wenn du auf eine Variable oder ein Array-Element zugreifst, welches nicht existiert.
Dann musst du eben vorher prüfen ob es existiert (habe ich dir gezeigt) oder sicherstellen, dass dieses Element existiert.

Die Fehlermeldungen sagen dir ganz genau in welcher Zeile was nicht existiert, das zu beheben ist nun dein Lernprozess, Sinn der Sache ist ja nicht, dass wir dir jeden Codeschnippsel korrigieren, sondern dass du lernst wie es geht ;)
 

Screamdad

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2007
Beiträge
364
$kickit = isset($_POST['password_kick']); *bleibt noch ein Problem

Kann mir jemand hier ein Tipp geben bei?
while(!feof($fp)) { $cont .= fgets($fp, 128); }

Undefined variable: cont
 
Zuletzt bearbeitet:

cx01

Lt. Junior Grade
Dabei seit
Mai 2010
Beiträge
258
Versuch mal cont vor der schleife zu initialisieren, also: $cont = "";
 

Screamdad

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2007
Beiträge
364
Wie kann ich es Anstellen, das die Links (Input buttons) auch den richtigen Pfad gehen nach dem klicken (kicken/auswählen), ich schaffe es nicht, das er auf der eigenen Seite wieder landet, sondern er wandert davor.

Standard sehen die Link-Pfade so bei mir aus: lalala/user.php?site=home
Nun würde es schön sein wenn er hier landet: lalala/user.php?site=diese

Was er aber macht, nachdem ich auf "Asuwählen klicke, oder auch beim Kicken,
ist... das er dahin wandert: user.php?id=0&send2=Ausw%C3%A4hlen

da fehlt: site=diese also Quasi so: user.php?(site=diese)id=0&send2=Ausw%C3%A4hlen

Somit landet er nicht da wo er soll beim Kicken und das Auswählen funktioniert
daher erst überhaupt nicht. Was muss noch geändert werden?

________________________________
Edit: $cont = ""; Perfekter Tipp (Danke)
 
Zuletzt bearbeitet:

Screamdad

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2007
Beiträge
364
Beide Varianten wie zu erwarten leider fehlgeschlagen!

Laut Script (wie man oben sieht) ist bereits
<form method="post"
vorhanden.

Dabei würde die eigendliche Funktion verloren gehen. ^^
 
Zuletzt bearbeitet:

Screamdad

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2007
Beiträge
364
Auch durch diese Änderung,
geht der Link nicht zur eigenen streamkick.php zurück, sondern rutscht wieder zur user.php. Richtig wäre aber (user.php?site=streamkick?id.........) statt (user.php?id.......).

Ich glaube (weiss nicht genau) das alles hinter streamkick(.php)
egal ist also ab ?id... genau weiss ich es aber nicht,
er soll einfach Kicken bzw.
Auswählen und dann wieder zur streamkich Site zurück gehen.
Was er nicht tu. *seuftz
 

cx01

Lt. Junior Grade
Dabei seit
Mai 2010
Beiträge
258
Füg mal folgenden Code zwischen die <form>-Tags ein:
Code:
<input type="hidden" name="site" value="streamkick">
Also insgesamt dann:
Code:
<form method="get" style="margin: 0px;"> 
 <input type="hidden" name="site" value="streamkick">
 <select style="border: 1px solid black; border-color: #414141; color: #ADC8E3; background: #414141" name="id"> 
<!-- und so weiter -->
 

Screamdad

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2007
Beiträge
364
@cx01

Vielen Dank....

Der Button "Auswählen" funktioniert so weit ich sehe tadellos,
aber..... nach dem Kicken müsste der Refresh mich auch dahin bringen.

Ich denke es muss hier geändert werden:
Code:
echo "<meta http-equiv=refresh content=4;URL=".$_SERVER['PHP_SELF']."?id=$id>";
 
Zuletzt bearbeitet:

cx01

Lt. Junior Grade
Dabei seit
Mai 2010
Beiträge
258
Hmm ich würde sagen:
Code:
  echo "<meta http-equiv=refresh content=4;URL=".$_SERVER['PHP_SELF']."?site=streamkick&id=$id>";
 

Screamdad

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Jan. 2007
Beiträge
364
Danke an: Blitzmerker

und.....
einen Absolut riesen und herzlichen Dank für die Großartige Hilfe von "cx01",
einfach Perfekter User, ohne Dich wäre ich verzweifelt ohne Ende.

Ganz liebe Grüße
 
Zuletzt bearbeitet:
Top