webForumDet fria alternativet

GET-variabler vägrar fösvinna!

PHP

2 svar · 213 visningar · startad av fickel

Medlem sedan sep. 200210 inlägg
Frågan#1

Hej!

Har ett lite udda(?) problem.

Jag öppnar ett nytt fönster och skickar med lite i variabler som jag tar emot med $_GET. I det nya fönstret kan man ladda upp filer och skriva ett meddelande. Problemet är att när jag laddar om sidan efter att ha laddat upp en fil så finns fortfarande variablarna i $_SERVER['QUERY_STRING'] kvar. Jag vill att de ska fungera som vanligt, d.v.s. att de ska försvinna när ett formulär postas med method="POST". I vanliga fall försvinner väl alla GET-variabler?

Jag har försökt unset($_GET['id']) och $_GET['id'] = "" men när sidan laddas och har $_GET['id'] fortfarande det värdet som skickas första gången.

Några tips?

(Har letat och sökt här på forumet men jag hittar inget liknande problem.)

Tack på förhand.

Medlem sedan sep. 200210 inlägg
#2

Lite kod för att ni ska förstå

Öppna fönstret:
asdf

<a href="createNewMess.php?reply=true&idType=<?=$idType?>&id=<?=$id?>&quote=true" onclick="msgWindow=window.open('','writeAnswer',',scrollbars=yes,width=470,height=500,resizable')" target="writeAnswer">

Här kommer den alltid in:

if (isset($_GET['quote']) && $_GET['quote'] == 'true') {
					printf("\n");
					printf("\n");
					printf("\n");
					$langText = trim(write($lang, 'WrittenBy'));
					echo $langText;
					$fullName = getFullname($link, $oldMessageDataArray[0]);
					echo " $fullName ($oldMessageDataArray[1]):";
					printf("\n");
					echoMessageWhenWriting($oldMessageDataArray[2]);
				} else {
					echo "ingen post?";
					echoMessageWhenWriting($_POST['Message']);
				}

Hur jag än laddar om sidan med följande kod så blir alltid $_GET['quote'] == 'true'. Det bör kanske sägas att jag laddar alltså om sidan så här (något förkortat):

<tr>
		<td width="100" class='text'>
			<input type='hidden' name='MAX_FILE_SIZE' value='2000000'><? echo (write($lang, "Attachments")); ?>:
		</td>
	</tr>
	<tr>
		<td>
			<input name='userfile' type='file' class="inputupload" size='15'>
			<?
			if ($_POST['dir'] == "") {
				$date =  date("Y");
				$date .=  date("m");
				$date .=  date("d");
				$date .=  date("H");
				$date .=  date("i");
				$date .=  date("s");
				$date .= $_SESSION['username'];
				$uploadDir = "../tempupload/".$date."/";
				echo "<input type=\"hidden\" name=\"dir\" value=\"$uploadDir\">";
			} else {
				$uploadDir = $_POST['dir'];
				echo "<input type='hidden' name='dir' value='$uploadDir'>";
			}
			echo "<input type='hidden' name='removeThisFile' value=''>";
			
			?>
			<input type='submit' name='newFile' class='inputbutton' value='<? echo (write($lang, "AddThisFile")); ?>' >
		</td>
	</tr>

och formtaggen:

<form action="<?=$PHP_SELF?>" enctype="multipart/form-data" method="post" name='newMessForm'>
Medlem sedan apr. 2002830 inlägg
#3

Det är i din form action som problemet ligger tror jag. $PHP_SELF ger hela adressen du är på, dvs med alla $_GET variabler. Använd filnamnet eller någon variabel som inte tar med variablerna!

/Nippe

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)