Kom ihåg mig?
Home Menu

Menu


Kolla om någon $_POST isset

 
Ämnesverktyg Visningsalternativ
Oläst 2011-05-03, 21:54 #11
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
Citat:
Ursprungligen postat av Althalos Visa inlägg
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.
Nja, jag skulle inte ta för givet att $_POST alltid är en array, som du gör.
Jake.Nu är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-03, 23:23 #12
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
Det är ju bara om du själv lyckas skriva över $_POST med din egen kod som den inte är en array.
T.ex:
$_POST = null;
objx är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-04, 01:23 #13
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
Citat:
Ursprungligen postat av ITisGood.se Visa inlägg
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.
Eftersom den kontrollen sker på mer än ett ställe (vilket är troligt) så platsar den i en funktion.
All logik som görs på mer än ett ställe skall vara i en funktion för att underlätta.

Citat:
Ursprungligen postat av emilv Visa inlägg
Jonas själv har ett logiskt fel i exemplet.
Eh, var när hur? Koden är dessutom skriven direkt från huvudet, och var tänkt som exempel.

Citat:
Ursprungligen postat av Althalos Visa inlägg
if($_POST) är fortfarande det kortaste alternativet.
Som kommer att producera en NOTICE om $_POST inte är satt.

Senast redigerad av Jonas den 2011-05-04 klockan 01:28
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-04, 06:33 #14
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 Jonas Visa inlägg
Eh, var när hur?
Din jämförelse med false ska inverteras. Just nu säger du att om värdet inte är satt så ska du använda det.

Den logik du försöker låta bli att upprepa är rätt meningslös. Det blir ju lika mycket kod att skriva, bara att du skriver post() och skippar arrayens namn istället för isset(), och det är tveksamt om det kommer behöva göras ändringar i framtiden. Jag tycker det blir klarare att bara göra issetjämförelsen öppet istället för att lägga den i en funktion som potentiellt göra många fler saker.

Men samtidigt håller jag inte riktigt med i all kritik mot metoden. Om det fungerar för dig och dina projekt är det antagligen bra kod, och jag kan förstå att vissa inte vill skriva $_POST överallt. Och du har rätt i att vissa andra förslag ger notiser - syndigt värre!
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-04, 09:18 #15
coredevs avatar
coredev coredev är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Sep 2007
Inlägg: 1 554
coredev coredev är inte uppkopplad
Bara ett inlägg till!
coredevs avatar
 
Reg.datum: Sep 2007
Inlägg: 1 554
Om jag förstår dig rätt så vill du göra följande:

[pseudokod]
if(är_satt($_POST)) {
//validera under-element till POST:en här samt gå vidare med hanteringen av dessa
}
[/pseudokod]

Detta vill du göra för att helt enkelt slippa gå in och ladda din inlänkade fil om du inte kommer från rätt formulär / om något bara klickat på "submit" / annan mystisk anledning?

Jag tror nog att du bör kolla på att revidera din design istället för att bara hitta en lösning som fungerar. Ditt pattern verkar vara ganska sårbart mot förändringar.
coredev är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-04, 17:30 #16
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
Eftersom den kontrollen sker på mer än ett ställe (vilket är troligt) så platsar den i en funktion.
All logik som görs på mer än ett ställe skall vara i en funktion för att underlätta.
Ja, absolut där håller jag med.
Men i det exemplet hjälper det dig ju inte alls eftersom du ändå tvingas göra i stort sett samma kontroll i koden ändå . Det gör ju att funktionen inte förenklar och gömmer undan kod vilket är hela anledningen till att man placerar sådan logik som används på flera ställen i en funktion.
Jämför:
Citat:
Ursprungligen postat av Jonas Visa inlägg
PHP-kod:
<?php
if( ($value post('namn')) === false) {
echo 
'Hej ' $value;
} else {
echo 
'Inget namn satt';
}
?>
med
PHP-kod:
<?php
if(isset($_POST['namn'])) {
echo 
'Hej ' $_POST['namn'];
} else {
echo 
'Inget namn satt';
}
Din funktion fyller ju ingen funktion då man kan göra exakt samma kontroll direkt i koden och den är dessutom både enklare och kräver ett mindre antal tecken. Det andra exemplet har ju även fördelen att alla vet exakt vad som händer där utan att veta vad funktionen "post" gör.
pelmered är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-04, 19:16 #17
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 Jake.Nu Visa inlägg
Nja, jag skulle inte ta för givet att $_POST alltid är en array, som du gör.
Är $_POST satt av servern är det en array, annars returnerar väl alla de där kontrollerna false, eller åtminstone något som evalueras till fasle i en if-sats. Har inte kolla på alla i huvudet dock så jag kan ha fel.
pelmered är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-04, 21:07 #18
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 Jonas Visa inlägg
Som kommer att producera en NOTICE om $_POST inte är satt.
Testa kör följande på din dator:
error_reporting(-1);
if(!$_POST) echo 'test';

Det genererar i alla fall ingen E_NOTICE i min logg. Dessutom så används överallt i manualen på php.net...

Citat:
Nja, jag skulle inte ta för givet att $_POST alltid är en array, som du gör.
$_POST är en s.k. "superglobal array" - man hänvisar till den på det sättet i manualen och det står tydligt att den endast definieras i form av en array.
Althalos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-05, 06:57 #19
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
Citat:
Ursprungligen postat av Althalos Visa inlägg
Testa kör följande på din dator:
error_reporting(-1);
if(!$_POST) echo 'test';

Det genererar i alla fall ingen E_NOTICE i min logg. Dessutom så används överallt i manualen på php.net...



$_POST är en s.k. "superglobal array" - man hänvisar till den på det sättet i manualen och det står tydligt att den endast definieras i form av en array.
Ja den definieras som en array men det finns inget som hindrar att skriva över den med valfritt värde.
Jake.Nu är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-06, 00:31 #20
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 Jake.Nu Visa inlägg
Ja den definieras som en array men det finns inget som hindrar att skriva över den med valfritt värde.
Finns ju ingen anledning att skiva över den. Om man skriver kod där det kan hända har man nog gjort något väldigt fel och då bör man nog tänka om lite i och för sig.
pelmered ä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 08:23.

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