PHP4.2.3 übernimmt keine Variablen bei include !

Sebastian

Erfahrenes Mitglied
Wenn ich folgenden Befhel habe:

PHP:
<?php 
if (!$show) {$show="main";}
if (file_exists("include/$show.inc.php"))
{include("include/$show.inc.php");}
else {include("include/err404.inc.php");}
?>

und dann per link auf index.php?show=seite2 verweise dann zeigt der mir immer noch die main.inc.php und nicht seite2.inc.php


was ist an PHP falsch konfiguriert ????
 
schreib doch mal ganz oben hin $show = $_GET["show"];

wobei es daran eigentlich nicht liegen kann/muss.
 
hm früher als ich noch ne andere PHP Version drauf hatte musste ich das nicht machen ! Aber es klappt so aber das ist was umständlich das jetzt für jede Variable zu machen ! Kann man da nicht irgend was an der Konfiguration von PHP 4.2.3 machen ???
 
Zuletzt bearbeitet:
seit 4.2 ist register globals standardmässig deaktiviert, du kannst es ja aktivieren wenn du die rechte hast.

ist aber nicht zu empfehlen.
 
sorry Dave_
bin was sicherheit betrifft nich unbedingt der hellste...zumindest verstehe ich nicht warum register globals besser aus sein sollte...!?
 
also ..

auch wenn ich es schonmal beschrieben
hatte, warum : Wenn du die 20te Action
Variable hast, wäre es irgendwann mal
ganz schön zu wissen woher die kommen.

Ausserdem könnte man mit globalen
Variablen deine Scripte ziemlich durch-
einander bringen : Bsp :

Du hast eine Variable $delete und deren
Wert ist FALSE. Diese Variable steuert
deine DB. Das heißt wenn sie gesetzt ist, also TRUE, wird deine DB gelöscht.
Normalerweise gibst du diese Variable über
ein Formular mit.

Wenn jetzt eine miese kleine Ratte wie ich
die URL deiner Domain + ?delete=true eingibt macht es Zuuuuuuup und weg ist
deine Datenbank.

Im neuen Modell von PHP würde man die
Variable delete in $_POST["delete"]
finden und daher KÖNNTE das oben be-
schriebene Szenario garnicht passieren.

Geht aber nur wenn register_globals off
ist, sonst gilt immer noch ?delete=true

Verstanden ?
Jona
 
hat mit dem Webserver nix zu tun ... kommt auf die PHP-Version an. In PHP 4.x sollte es aber auch mit älteren Versionen (vor 4.2.x) funktionieren.


Dunsti
 
@Jonathan: da wäre man dann aber selber dran schuld, wenn man ein solch simples script macht wäre das echt - enschuldigt den ausdruck - bescheuert. Bei db sachen würde ich immer eine user abfrage mit einbauen, so umgeht man eine solche sicherheitslücke.

[edit]
ich habe jetzt mal register_globals = on gesetzt, und mein script funtz wunderbar, ein prob habe ich aber:

mein script sieht ungefähr so aus:
PHP:
<?
include('config.inc');
$verbindung=mysql_connect($dbserver, $dbuser, $dbpass);
mysql_select_db($dbname, $verbindung);
$sql="select * from gb";
$ergebnis=mysql_query($sql, $verbindung);

if ($status == 1)
{
  if ($author == "") $autfehler="Nickname fehlt";
  else $autfehler="";
  if ($content == "") $confehler="Bitte geben Sie eine Nachricht ein!";
  else $confehler="";
  if ($autfehler == "" && $confehler== "")
  {
    $sql = "insert into gb (autor, email, homepage, eintrag, datum) values ('".$author."','".$email."','".$hp."','".$content."',".time().")";
    $ergebnis=mysql_query($sql, $verbindung);
    echo "Daten wurden eingetragen";
  }
}

echo ("
<form name='eingabe' method='post' action='vorlage_gb_eingabe.php?status=1'>
<input type='text' name='author' value='".$author.$autfehler."' class='input' maxlength='30'>
<input type='text' name='email' value='".$email."'class='input' maxlength='255'>
<input type='text' name='hp' class='input' value='".$hp."' maxlength='255'>
<textarea name='content' class='input' rows='10' cols='50' maxlength='1500'>".$content.$confehler."</textarea>
<input type='submit' name='posten' value='posten' class='input'>
</form>
");

mysql_close($verbindung);
?>
habe den code mal gekürzt, sonst würde ich ja den thread vollspammen ^^
wie ihr sehen könnt reagiert das script erst wenn status = 1 ist vorher sieht der user nur ein forumlar. wenn ich das script also zum ersten mal starte ignoriert er die if anweisung und gibt das formular aus, in disem formular sind variablen verbaut, und genau da liegt mein prob, wenn das script zum erstenal gestartet wird existieren diese variablen ja noch nicht und mein localer webserver schmeist mir ne fehlermeldung an den kopf das die variablen nicht existieren ... da muss ich doch sicher was in der php.ini umschreiben oder? da war doch son eintrag mit fehlerstufe oder so, was muss ich da eintragen das er die fehlenden varies ignoriert?
 
Zuletzt bearbeitet von einem Moderator:
Zurück