WinFuture-Forum.de: [php]werte Innerhalb Eines Scriptes übergeben - Sessions? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[php]werte Innerhalb Eines Scriptes übergeben - Sessions?


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 23. Mai 2008 - 15:24

Hallo,
Brauche eure Hilfe! Und zwar, geht es darum per Script eine Datei zu löschen. Dabei möchte ich aber noch eine Bestätigung habe bevor es gelöscht wird.

Sowiet habe ich es:
<form action="<?php echo $PHP_SELF; ?>" method="post" >
<p>Dateiname<input name="dateiname" /> 
<br />
Passwort <input name="pw" type="password"  />
</p>
<p><input type="submit" name="senden"  />
</form>
<p>
<?php
// Datei löschen
$l_datei="uploads/".$_POST['dateiname'];
$pw=$_POST['pw'];
if (!empty($_POST)) {
	if($pw == $pass){
		echo "Willst du die Datei ".$_POST['dateiname']." wirklich löschen? <input type='submit' name='yes' value='Ja!' />";
		if($_POST['yes'] == "Ja!"){
		unlink("$l_datei");
		echo $l_datei; // hier habe ich gesehen dass der Wert futsch ist!
		}
	}
}


Mein Problem ist nur folgendes:
Ich habe 2 Submitbuttons. Wenn ich den Button 'Ja!' anklicke ist der Wert 'Dateiname' den ich zuvor per POST gesendet habe futsch. Mir is klar warum, aber dies möchte ich gerne umgehen. Ich frage mich nun wie? Mit Sessions habe ich noch nie gearbeitet. Machtr man das mit den Bestätigungen so oder wie get es "üblicherweise"?
0

Anzeige



#2 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 291
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 23. Mai 2008 - 15:45

Ja du könntest das glaub ich mit session registrieren

Ich würd es so machen aber nicht böse sein wenn es falsch ist ;(

Zitat

<form action="<?php echo $PHP_SELF; ?>" method="post" >
<p>Dateiname<input name="dateiname" />
<br />
Passwort <input name="pw" type="password" />
</p>
<p><input type="submit" name="senden" />
</form>
<p>
<?php
session_start();

// Datei löschen
$l_datei="uploads/".$_POST['dateiname'];
$pw=$_POST['pw'];
session_register('pw');

if (!empty($_POST)) {
if($pw == $pass){
echo "Willst du die Datei ".$_POST['dateiname']." wirklich löschen?
session_register('dateiname');

<input type='submit' name='yes' value='Ja!' />";
if($_POST['yes'] == "Ja!"){
unlink("$l_datei");
echo $l_datei; // hier habe ich gesehen dass der Wert futsch ist!
}
}
}


Das wär mein Vorschlag aber bin auch noch Anfänger wenns falsch ist bitte korrigieren!!
0

#3 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 23. Mai 2008 - 16:02

Hm :-D
ja ein "paar" Fehler sind drin.
Du hast ab und zu ";" und so vergessen aber das macht ja nichts!
Hast zum Beisiel session_register('dateiname'); in nen echo Befehl kopiert, aber das kann man ausmerzen.
Man kann also mit session_register('xy'); den Wert von $xy festhalten?

EDIT:
Ich habe es nun mal so versucht!
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Toastload | Private Filesharing *Control Panel*</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<link rel="shortcut icon" href="http://www.toasterfraktion.de/forum/fav.ico" />
</head>
<body>
<?php
$pass="";
?>
<form action="<?php echo $PHP_SELF; ?>" method="post" >
<p>Dateiname<input name="dateiname" /> <br />
Passwort <input name="pw" type="password"  /></p>
<p><input type="submit" name="senden"  />
</form><p><?php
// Datei löschen
$l_datei="uploads/".$_POST['dateiname'];
$pw=$_POST['pw'];


// Session Werte
$_SESSION['dateiname'] = $_POST['dateiname'];
$_SESSION['l_datei'] =  $l_datei;
$_SESSION['pw'] = $pw;

session_start();

if (!empty($_POST)) {
	if($pw == $pass){
		echo "Willst du die Datei ".$_SESSION['dateiname']." wirklich löschen? <input type='submit' name='yes' value='Ja!' />";
			if($_POST['yes'] == "Ja!"){
			unlink($_SESSION['l_datei']);
			echo $l_datei;
			}else{
			echo "Die Datei ".$_SESSION['dateiname']." konnte nicht gelöscht werden!";
			}
	}else{
	echo "Falsches Passwort!";
	}
}


Geht nicht! :-(

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 23. Mai 2008 - 16:15

0

#4 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 23. Mai 2008 - 16:19

In der PHP Dokumentation zu Session findet man einige Beispiele: http://de.php.net/ma...ssion-start.php

Wichtig ist session_start(); ziemlich am Anfang des Skripts (vor der ersten Ausgabe). Danach kannst du über das globale Array $_SESSION['..'] Werte setzen und ändern. Also z.B.
$_SESSION['xy'] = 'wert_von_xy';
$_SESSION['ab'] = 'wert_von_ab';


session_register() ist veraltet und zu vermeiden, die $_SESSION['variablenname'] = 'wert'; Methode ist vorzuziehen.

Um eine $_SESSION Variable zu löschen, einfach unset($_SESSION['variablenname']);.
Um alle registrierten Werte einer Session zu löschen, "zerstört" man die Session mit session_destroy();.

Gruß,
Stefan
0

#5 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 23. Mai 2008 - 16:24

Ich würde einfach die beiden Submit-Button in je ein Formular packen und in versteckten Input-Feldern eben zwei unterschiedliche Werte mitgeben.

Also:

<form action="loeschdatei.php" method="post">
<input type="hidden" name="aktion" value="abbrechen" />
<input type="submit" name="senden" value="Abbrechen" />
</form>

<form action="loeschdatei.php" method="post">
 <input type="hidden" name="aktion" value="loeschen" />
 <input type="submit" name="senden" value="Abbrechen" />
 </form>


und die loeschdatei:

if ($_POST['aktion'] == "abbrechen")
		{
			// nüscht machen
		}
		else
	   {
			// datei löschen
		}


Kann man natürlich auch in einer Datei machen aber ich finde so das Prinzip übersichtlicher erklärt.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#6 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 23. Mai 2008 - 16:36

Hm irgendwowas mit hiddenfekdern habe ich mir auch gedacht, nur das verstehe ich nicht.
Ich möchte ja erst einen Button drücken für den Befehl "Löschen" danach soll dann darunter ein zweiter Button mit Bestätigen erscheinen.

Aber ich würde mich auch gerne auf deine Weise einlassen, nur noch verstehe ich sie nicht!

EDIT:

Kann ich es nicht so machen?
<input type="hidden" name="name_temp" value="<?php echo $_POST['dateiname']; ?>"
Dann wird der Wert ja auch mit übergeben oder?
Aber wie kann ich ihn dann wieder in eine Variable speichern?
Geht das etwas einfach mit $_POST['name_temp'] ?

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 23. Mai 2008 - 16:49

0

#7 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 291
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 23. Mai 2008 - 17:25

Ja Toasterfraktion wie DieWie schon gesagt hat es ist wichtig session_start() ziemlich am Anfang zu setzen.
Ich mach es immer so :
<?php

session_start();
......
.......
if....
echo.....

also ich setz session_start gleich am Anfang des Skriptes.

Versuch es mal so ob es dann geht.

Du kannst es ja dann testen z.B. mit:

echo "Wollen Sie ".$_SESSION['dateiname']."wirklich löschen? <br />
Übrigends ihr Passwort lautet ".$_SESSION['pw'].""  !!;!!
;)
0

#8 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 23. Mai 2008 - 17:59

Oh, habe den Beitrag von Diewie im Eifer wohl übersehen! ;)
Ich habe es nun fasst gelöst. Habe es vor allem mit hidden Feldern gemacht.

Die Funktion zum Löschen funktioniert perfekt, nur die Zum umbenennen noch nicht. Ich denke er verleiert wieder eine Variable auf dem Weg durch das Script. An der Stelle wo er sagt ob die Datei x in y umbenennen willst gibt er noch beide Variablen (dateiname_old; dateiname_new) wieder. Danach kommt der zweite Button. Eigentlich übernehme ich da dann die Hiddenfelder in neue Variablen. Nur das macht er nicht.

Da brauche ich noch mal euren Rat. Habe das Script mal ausgeschlachtet angehängt
<form action="<?php echo $PHP_SELF; ?>" method="post" >
Dateiname<input name="dateiname" />
Passwort<input name="pw" type="password" />
<input type="submit" name="senden" value="Löschne" />
<input type="hidden" name="name_temp" value="<?php echo $_POST['dateiname']; ?>" />
<?php  
if (!empty($_POST)) {
	if($pw == $pass){
		echo "Willst du die Datei ".$_POST['dateiname']." 
		wirklich löschen?<br /><input type='submit' name='yes' value='Ja! Löschen!' />";
			if($_POST['yes'] == "Ja! Löschen!"){
			$l_temp_name_dat=$_POST['name_temp'];
			unlink("uploads/$l_temp_name_dat");
			echo "<br />Die Datei ".$l_temp_name_dat." wurde erfolgreich gelöscht!";
			echo '<meta http-equiv="Refresh" content="2"; URL=index.php">';
			}
	}else{
	echo "Falsches Passwort!";
	}
}
?>  
</form>

<form action="<?php echo $PHP_SELF; ?>" method="post" >
Alter Dateiname<input name="dateiname_old" />
Neuer Dateiname<input name="dateiname_new" />
Passwort<input name="pw2" type="password" />
<input type="hidden" name="old_name" value="<?php echo $_POST['dateiname_old']; ?>" />
<input type="hidden" name="new_name" value="<?php echo $_POST['dateiname_new']; ?>" />
<input type="submit" name="senden2" value="Umbenennen" />
<?php
if (!empty($_POST)) {
	if($pw2 == $pass){
		echo "Willst du die Datei ".$_POST['dateiname_old']." wirklich in ".$_POST['dateiname_new']." umbenennen?<br /><input type='submit' name='yes2' value='Ja! Umbenennen!' />";
			if($_POST['yes2'] == "Ja! Umbenennen!"){
			$name_new2="uploads/".$_POST['dateiname_new'];
			$name_old2="uploads/".$_POST['dateiname_old'];
			rename("$name_old2", "$name_new2");
			echo "<br />Die Datei heißt nun ".$name_new2;
			echo '<meta http-equiv="Refresh" content="2"; URL=index.php">';
			}
	}else{
	echo "Falsches Passwort!";
	}
}

?>
 </form>

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 23. Mai 2008 - 18:01

0

#9 Mitglied ist offline   sibbl 

  • Gruppe: aktive Mitglieder
  • Beiträge: 377
  • Beigetreten: 30. Dezember 06
  • Reputation: 3
  • Wohnort:localhost

geschrieben 23. Mai 2008 - 18:26

man könnte auch ne confirm-javascript-abfrage machen *g* wäre einfacher gewesen
0

#10 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 23. Mai 2008 - 19:28

@ sibbl
Könntest du mir mal zeigen wie das geht bzw was du meinst?

Also ich hab die Bestätigung nun wieder rausgenommen weil es nicht geht.
Wer eine Idee hat wie man soeine Bestätigung noch machen kann möge es mir sagen! ;)

Danke :-)

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 23. Mai 2008 - 19:31

0

#11 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 23. Mai 2008 - 19:37

Beitrag anzeigenZitat (Toasterfraktion: 23.05.2008, 17:36)

Hm irgendwowas mit hiddenfekdern habe ich mir auch gedacht, nur das verstehe ich nicht.
Ich möchte ja erst einen Button drücken für den Befehl "Löschen" danach soll dann darunter ein zweiter Button mit Bestätigen erscheinen.

Aber ich würde mich auch gerne auf deine Weise einlassen, nur noch verstehe ich sie nicht!


Dann mach die beiden Formulare wie ich es beschrieben habe aber mit der Bedingung, dass das Formular mit dem Bestätigungsknopf erst beim zweiten Aufruf angezeigt wird und der erste Knopf (Löschen) macht nix anderes als diesen Aufruf und der Bestätigungsknopf das eigentliche Löschen.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#12 Mitglied ist offline   sibbl 

  • Gruppe: aktive Mitglieder
  • Beiträge: 377
  • Beigetreten: 30. Dezember 06
  • Reputation: 3
  • Wohnort:localhost

geschrieben 24. Mai 2008 - 12:07

Beitrag anzeigenZitat (sibbl: 23.05.2008, 19:26)

man könnte auch ne confirm-javascript-abfrage machen *g* wäre einfacher gewesen



bei deinem button/formular:
<input type="submit" name="senden" onclick="this.form.confirm = confirm('Wollen Sie das wirklich löschen?');">


ODER:

<form onsubmit="return confirm('Wollen Sie das wirklich löschen?')">

Dieser Beitrag wurde von sibbl bearbeitet: 24. Mai 2008 - 12:08

0

#13 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 24. Mai 2008 - 12:37

Vieeelen Dank sibble das is wohl die einfachste Lösung!

Du musst es dann aber so schreiben:
onsubmit="this.form.confirm = confirm('Wollen Sie das wirklich löschen?');"
So klappt es Perfekt!

Weil sonst brauche ich nur in die Input fekder klicken um was zu schreiben und die Meldung kommt schon!

Danke
Gruß Toaster
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0