Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Sessions und Variablen übergabe Problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Sessions und Variablen übergabe Problem


 
Hazzardous
14-04-2004, 14:50 
 
Hallo,

ich habe ein Problem das ich eine Variable nicht übergeben kann.

Der aufbau ist wie folgt:

index.php

<?php session_start();
session_register("name");?>
<html>
<head>
<title>Firmen</title>
...
..
...
.
<div align="center">
<?php switch($main)
{
case "view": include 'view.php'; break;
case "upload": include 'form.php'; break;
case "del": include 'delete.php'; break;
case "help": include 'help.php'; break;
case "detail": include 'firmen.php?uid='.$row["Id"].''; break;
}
?>
</div></td>
</tr>
..
...
..
..


Hier spielt sich alles ab. Dann kommt noch die view.php


<?php
session_start();
?>

<?php
error_reporting(E_ALL);

include 'includes/config.php';

@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());


$sql = "SELECT
Id,
Fname
FROM
egroh
ORDER BY
Id ASC;";

$result = mysql_query($sql) OR die(mysql_error());
echo 'Firmeneinträge<br>
<link href="../butzke.css" rel="stylesheet" type="text/css">
<form name="form1" method="post" action="">
<table width="700" border="1" cellspacing="2" cellpadding="2">
<tr>
<td class="fliesstext">ID</td>
<td class="fliesstext">Firmen Name</td>
<td class="fliesstext">Ansehen?</td>
';
while($row = mysql_fetch_assoc($result)) {
echo '
<tr>
<td class="fliesstext">'.$row["Id"].'</td>
<td class="fliesstext">'.$row["Fname"].'</td>
<td class="fliesstext"><a href="?main=detail">Details</a></td>
</tr>';
}
{
echo '
</table>
</form>';
}
?>

Dort taucht der Befehl auf: a href="?main=detail">Details.... hier soll also auf der Index der Befehl detail ausgeführt werden. Leider wird die $row["Id"] nicht mit übergeben. und demnach kommt dann:


Warning: main() [function.main]: open_basedir restriction in effect. File(/usr/share/php/firmen.php?uid=) is not within the allowed path(s): (/opt/web1/) in /opt/web1/html/egroh/index.php on line 63

Warning: main(firmen.php?uid=) [function.main]: failed to create stream: Operation not permitted in /opt/web1/html/egroh/index.php on line 63

Warning: main() [function.main]: Failed opening 'firmen.php?uid=' for inclusion (include_path='.:/usr/share/php') in /opt/web1/html/egroh/index.php on line 63


Wo liegt der Fehler? Was mach ich bei der Session falsch? Oder ist der "case" im Switchbefehl nicht korrekt?

Danke im Vorraus.

 
Wurzel
14-04-2004, 14:53 
 
du kannst nicht mit angehängten parametern includen ... so gehts aber:...
case "detail":
$uid=$row["Id"];
include 'firmen.php';
break;
...

 
Hazzardous
14-04-2004, 15:03 
 
Hi,

danke für die schnelle Antwort.

Nun kommt zwar die Fehlermeldung nicht mehr, aber scheinbar wird die Variable trotzdem nicht richtig übergeben. Die dann geöffnete Firmen.php ist dann leer.

Geöffnet werden müsste "firmen.php?uid=1" oder 2 oder 4 je nach $row["Id"];

 
Wurzel
14-04-2004, 15:07 
 
1. hat $uid/$row['id'] überhaupt einen wert?
2. wie fragst du in der firmen.php ab ... $_GET wäre jetzt falsch ;)
...

 
Hazzardous
14-04-2004, 15:13 
 
also angenommen ich rufe in der "view.php" direkt den Link auf
<a href="firmen.php?uid='.$row['Id'].'">.... öffnet sich auch wunderbar die firmen.php mit dem entsprechenden eintrag. Allerdings im neuen Browserfenster und nicht included auf der index.php
Das wollte ich mit dem switch umgehen.

die firmen.php sieht so aus:




<?PHP

include 'includes/config.php';

if(!isset($_GET['uid'])) {

} elseif(is_numeric($_GET['uid'])) {

@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

$sql='SELECT
Id,
Fname,
Fori,
Fstreet,
Fplz,
Fort,
Ftel,
Apartner,
email,
Fhp
FROM
egroh
WHERE id='.$_GET["uid"];


$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);


?>

<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr class="fliesstext">
<td width="120">Firmenname:</td>
<td><?php echo $row['Fname'];?></td>
</tr>
<tr class="fliesstext">
<td height="15" colspan="2">&nbsp;</td>
</tr>
<tr class="fliesstext">
<td width="120">Bereich:</td>
<td><?php echo $row['Fori'];?></td>
</tr>
<tr class="fliesstext"> </tr>
<tr class="fliesstext">
<td height="15" colspan="2">&nbsp;</td>
</tr
>
<tr class="fliesstext">
<td width="120">Adresse:</td>
<td><?php echo $row['Fstreet'];?></td>
</tr>
<tr class="fliesstext">
<td></td>
<td><?php echo $row['Fplz'];?>&nbsp;&nbsp; <?php echo $row['Fplz'];?></td>
</tr>
<tr class="fliesstext"> </tr>
<tr class="fliesstext">
<td height="15" colspan="2">&nbsp;</td>
</tr
>
<tr class="fliesstext">
<td width="120">Ansprechpartner</td>
<td><?php echo $row['Apartner'];?></td>
</tr>
<tr class="fliesstext"> </tr>
<tr class="fliesstext">
<td height="15" colspan="2">&nbsp;</td>
</tr
>
<tr class="fliesstext">
<td width="120">Telefon</td>
<td><?php echo $row['Ftel'];?></td>
</tr>
<tr class="fliesstext"> </tr>
<tr class="fliesstext">
<td height="15" colspan="2">&nbsp;</td>
</tr
>
<tr class="fliesstext">
<td width="120">E-Mail</td>
<td><?php echo $row['email'];?></td>
</tr>
<tr class="fliesstext"> </tr>
<tr class="fliesstext">
<td height="15" colspan="2">&nbsp;</td>
</tr
>
<tr class="fliesstext">
<td width="120">Homepage</td>
<td><?php echo $row['Fhp'];?></td>
</tr>
</table>

<?php

} else {

die("Bitte gebe eine Korrekte User ID an!");

}

?>

 
Wurzel
14-04-2004, 15:14 
 
Original geschrieben von Wurzel
... $_GET wäre jetzt falsch ;)
...

 
wahsaga
14-04-2004, 15:15 
 
Original geschrieben von Hazzardous
die firmen.php sieht so aus: [...]
und eben dort darfst du jetzt nicht mehr mit $_GET auf die vars zugreifen, wie wurzel ja schon sagte.

wie wär's, wenn du die antworten lesen würdest, anstatt uns stupide deinen code vorzuwerfen?


le würzel war schneller ...

 
Hazzardous
14-04-2004, 15:20 
 
Er hatte auch noch nach dem Inhalt der Datei gefragt. Diesen hab ich gepostet. Musst DU wohl überlesen haben.

 
Hazzardous
14-04-2004, 15:25 
 
Original geschrieben von Wurzel


;)

sondern?

 
wahsaga
14-04-2004, 15:35 
 
Original geschrieben von Hazzardous
Er hatte auch noch nach dem Inhalt der Datei gefragt. Diesen hab ich gepostet. Musst DU wohl überlesen haben.
nein, hat er nicht. er wollte von dir wissen, wie du auf die variablen zugreifst - nicht, wie dein komplettes script aussieht.
ja, eine gezielte antwort auf die frage hätte natürlich ein wenig mehr denkarbeit deinerseits bei der formulierung der antwort erfordert, als wenn du einfach deinen code hier reinballerst ...

sondern?
mit einem per include eingebundenen script verhält es sich fast so, als wenn du es per copy&paste in das "haupt"-script eingefügt hättest.

wenn also im haupt-script eine variable $foo zur verfügung steht, hast du auch im per include eingebundenen script zugriff auf $foo.

 
Hazzardous
14-04-2004, 21:34 
 
Nabend,

also das Prinzip vom Include habe ich verstanden. Aber ich verstehe nicht wie ich die Variable bzw die SQL abrage, welche ich für die ID brauche und welche in der view.php erzeugt wird so auf der Mainseite einbaue das ich sie dann in der firmen.php weiter verwenden kann. Zumal die ID ja immer wechselt. Wenn ihr mir hier einen Denkanstoss geben könntet wäre ich dankbar.

Angenommen ich packe auf die main seite, also auf die Index.php

$uid='.$row["ID"].' dann verbirgt sich hinter ID ja nicht die um einen bestimmten Datensatz zu ändern. Da ich dafür die schon vorhanden ID aus der view.php brauche für den jeweiligen Datensatz.

:confuse:

 
schmalle
14-04-2004, 21:37 
 
hast du verstanden, was du geschrieben hast? ich jedenfalls nicht!

 
Hazzardous
14-04-2004, 21:39 
 
hmm ja? :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:50 Uhr.