Kom ihåg mig?
Home Menu

Menu


Kolla om någon $_POST isset

 
Ämnesverktyg Visningsalternativ
Oläst 2011-04-29, 19:18 #1
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
Question Kolla om någon $_POST isset

Går det på något sätt att kolla om någon $_POST isset med php?

Då menar jag inte att kolla en specifik $_POST som t.ex. if (isset($_POST['submit'])) utan kolla om det finns någon $_POST över huvudtaget som är isset.
robincox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-04-29, 20:33 #2
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
Hittade svaret på ett annat forum, så tänkte dela med mig.

if ($_POST) kollar ifall någon $_POST över huvudtaget har skickats med sidan. Detta är skitbra då jag har samlat alla mina händelser som ska triggas i fall något formulär har postats till sidan i en inlänkad php fil.

Oh happy day!
robincox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 02:37 #3
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Annars är det mer korrekt med:

PHP-kod:
<?php
function post($value) {
   if(isset(
$_POST[$value])) {
      return 
$_POST[$value];
   } else {
      return 
false;
   }
}
?>
Man bör göra liknande funktioner med $_GET, $_COOKIE, $_SERVER & $_SESSION.

fördelen är om man får bort repetetiv kod från sidorna.
Tex.
PHP-kod:
<?php
if( ($value post('namn')) === false) {
echo 
'Hej ' $value;
} else {
echo 
'Inget namn satt';
}
?>
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 03:20 #4
pelmereds avatar
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2010
Inlägg: 1 342
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
pelmereds avatar
 
Reg.datum: May 2010
Inlägg: 1 342
Citat:
Ursprungligen postat av Jonas Visa inlägg
Annars är det mer korrekt med:

PHP-kod:
<?php
function post($value) {
   if(isset(
$_POST[$value])) {
      return 
$_POST[$value];
   } else {
      return 
false;
   }
}
?>
Man bör göra liknande funktioner med $_GET, $_COOKIE, $_SERVER & $_SESSION.

fördelen är om man får bort repetetiv kod från sidorna.
Tex.
PHP-kod:
<?php
if( ($value post('namn')) === false) {
echo 
'Hej ' $value;
} else {
echo 
'Inget namn satt';
}
?>
Förstår inte riktigt poängen med det där exemplet om jag ska vara ärlig.
Du gör ju samma kontroll i funktionen som du lika gärna skulle kunna göra direkt i koden. Det hade ju till och med blivit kortare om du skrev den direkt i koden såhär:
PHP-kod:
<?php
if(isset($_POST['namn'])) {
$value $_POST['namn'];
} else {
echo 
'Inget namn satt';
}
Det där ger exakt samma resultat som din lösning.
Massa specialfunktioner i onödan gör bara koden onödigt komplex.
pelmered är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 06:22 #5
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Citat:
Ursprungligen postat av ITisGood.se Visa inlägg
Massa specialfunktioner i onödan gör bara koden onödigt komplex.
Jonas själv har ett logiskt fel i exemplet.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 08:57 #6
RLM_JPs avatar
RLM_JP RLM_JP är inte uppkopplad
Medlem
 
Reg.datum: Feb 2009
Inlägg: 58
RLM_JP RLM_JP är inte uppkopplad
Medlem
RLM_JPs avatar
 
Reg.datum: Feb 2009
Inlägg: 58
Tack för tipset robincox! Brukar ganska ofta göra något när formulär postats, så nu slipper jag hålla koll på variabelnamn.
RLM_JP är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 10:54 #7
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
Anledningen till att jag vill ha if ($_POST) och inte if ($_POST['something']) är att jag har en php sida som jag includar om någon $_POST finns över huvud taget. Finns det någon $_POST så kommer massor av if (isset($_POST['differentValues'])) att kollas. Jag sparar en massa laddningstid genom att hoppa över alla $_POST kollningar om det inte finns någon $_POST över huvud taget.
robincox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 13:40 #8
Althalos Althalos är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 282
Althalos Althalos är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 282
Citat:
Ursprungligen postat av robincox Visa inlägg
Anledningen till att jag vill ha if ($_POST) och inte if ($_POST['something']) är att jag har en php sida som jag includar om någon $_POST finns över huvud taget. Finns det någon $_POST så kommer massor av if (isset($_POST['differentValues'])) att kollas. Jag sparar en massa laddningstid genom att hoppa över alla $_POST kollningar om det inte finns någon $_POST över huvud taget.
Det verkligt rätta sättet är att enkapsulera $_POST i ett objekt och sedan ha en metod, så skriver man typ som såhär:
if($obj->isset()) include('file.php');

Och om man vill hämta ett värde så skriver man
$obj->post('key');

Motsvarande metoder ska också finnas för $_GET etc. Kolla hur ramverk såsom Codeigniter har implementerat detta.

Men vill man inte programmera objektorienterat så skulle jag föredra Jonas lösning under alla omständigheter. Jag vet inte hur din kod ser ut men jag antar att du ändå kollar vilka specifika värden som är tillagda, innan du försöker göra något med dessa. Så du borde väl egentligen göra det typ såhär:
if($obj->validate()) include('file.php');

validate antas här vara en funktion som validerar din formdata och laddar in filen bara om formulärdatan går att använda till någonting. Det vore en bra lösning. Kör man inte objektorienterat så skulle jag ha gjort likadant d.v.s. validerat först och sedan baserat på valideringen inkluderat filen. Inte kollat om någon data finns, ladda in filen och sedan låta den göra valideringen. Men jag hade inte programmerat på det här sättet överhuvudtaget så vad vet jag...

En sista sak bara. Det är inte den här typen av optimeringar som sparar "massa med laddningstid" så Don't Repeat Yourself-principen och god struktur trumfar att minska antalet operationer, i det här sammanhanget, varje gång. Enligt min åsikt.
Althalos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 19:18 #9
Jake.Nu Jake.Nu är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 224
Jake.Nu Jake.Nu är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 224
Varför inte bara kolla om _POST är tom?

PHP-kod:
if (!empty($_POST)) {
    echo 
"Något finns i _POST";

Jake.Nu är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 21:38 #10
Althalos Althalos är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 282
Althalos Althalos är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 282
Citat:
Ursprungligen postat av Jake.Nu Visa inlägg
Varför inte bara kolla om _POST är tom?

PHP-kod:
if (!empty($_POST)) {
    echo 
"Något finns i _POST";

Eller if(!count($_POST)) eller if(!sizeof($_POST)) eller if(!end($_POST)) eller if(!next($_POST)) eller if(!current($_POST)) eller if(!count(array_keys($_POST)) eller if(array_reduce($_POST) != NULL)

etc.etc.etc. if($_POST) är fortfarande det kortaste alternativet.
Althalos är inte uppkopplad   Svara med citatSvara med citat
Svara

Taggar
form, formulär, php, post


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 23:22.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017