Archief - PHP: Iets zoals .contains()?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

yannick

Legacy Member
Goedemiddag,

Ik ben bezig met een registratie pagina en daarop stn checkboxes voor de hobby('s). 1 van die checkboxes noemt 'Anders', als je hier op klikt verschijnt er een textvak waar je je andere hobby kan "neerpennen".

Nu weten we allemaal dat mensen zich niet gaan beperken tot 1 woord en als ze dan meerder woorden gebruiken gaan ze zich niet beperken tot een spatie om de woorden te scheiden (gebruik van comma,streepje,punt-comma is denkbaar).

Nu zoek ik een methode zodat ik ofwel:

a) Check of er een streepje of punt-comma inzit, als dit dan het geval is laat ik een foutmelding zien (zoiets als contains() dus)
b) Het textboxke beperken tot 1 woord (Geen idee hoe ik dit moet doen)
c) Gebruik maken van explode() (explode kan ik gebruiken, alleen weet ik niet hoe ik een spatie EN een , in 1 explode gebruik)

Nu ik weet dus mogelijke oplossingen, alleen niet hoe er te graken.
Zouden jullie mij mss in de goede richting kunnen duwen (heb geen problemen om er zelf wa achter te zoeken, maar een duwtje in de rug zou aangenaam zijn want momenteel zit ik vast :))

Mvg
Yannick Wellens

passero

Legacy Member
laat de mensen hun hobby's ingeven in een textarea en laat ze ze scheiden door een enter. op die manier kan je gemakkelijk alles opsplitsen.

yannick

Legacy Member
passero zei:
laat de mensen hun hobby's ingeven in een textarea en laat ze ze scheiden door een enter. op die manier kan je gemakkelijk alles opsplitsen.

Ja, maar der zijn ALTIJD mensen die toch tegen de regels in willen gn en er een comma bij steken ;).

Dus het is als vorm van beveiliging dat ik er zeker van wil zijn dat wat ze ook invullen het juist in de database komt :)

mvg

Breen

Legacy Member
Code:
if (input.indexOf("-") != -1)
{
error?
}
Dit is nu niet php, maar toch dezelfde gedachtegang is toch toepasbaar op php ook. Volgens mij doe je dat zelfs beter client-side. Niet nodig om elke keer bij validatie terug naar de server te gaan. Javascript kan dit gemakkelijk afhandelen.

yannick

Legacy Member
Breen zei:
Code:
if (input.indexOf("-") != -1)
{
error?
}
Dit is nu niet php, maar toch dezelfde gedachtegang is toch toepasbaar op php ook. Volgens mij doe je dat zelfs beter client-side. Niet nodig om elke keer bij validatie terug naar de server te gaan. Javascript kan dit gemakkelijk afhandelen.

Merci, nu wist ik naar waar ik moest zoeken en dat is:
strstr (dit doet wat indexOf doet in javascript).

code is nu:
Code:
$andere=$_POST['Anderebox'];
if (strstr("$andere","-")){
error...;
}

*EDIT*
PS: Is er een manier om de tekstvakjes en checkboxes die waren ingevuld (behalve password) terug opnieuw te laten invullen als hij door de error terug naar de registratie pagina gaat?

Breen

Legacy Member
ja, Ik geloof dat je via get of post de error kunt meegven, maar nogmaals, dit is veel gemakkelijker op de client ipv elke keer een request te doen, nog niet te spreken over optimaal qua bandbreedte & server CPU usage

servi

Legacy Member
*EDIT*
PS: Is er een manier om de tekstvakjes en checkboxes die waren ingevuld (behalve password) terug opnieuw te laten invullen als hij door de error terug naar de registratie pagina gaat?

wel ja als je gewoon de parameters met de waarden meegeeft.

Als je dus bijvoorbeeld een formulier verstuurt, maar je merkt dat er iets fout is krijg je iets in deze trend om bijvoorbeeld het veld "hobbies" terug in te vullen
PHP:
<?php

$hobbies = ( !empty($_POST['hobbies'])?$_POST['hobbies']:'');

if ( formulierOk && formulierVerzonden ) {
// doe verdere verwerking

} else {
// geef formulier terug weer

?>
<form method="post">
....

<input type="text" name="hobbies" value="<?php echo $hobbies?>; " />
</form>
<?php
}

?>

dJeez

Legacy Member

yannick

Legacy Member
Hmm, thnx. Kzal er is naar zien (alhoewel het nu opgelost is).

Dan heb ik nog een vraagje. Is het mogelijk om move_uploaded_file te gebruiken bij een apache2 server (die local draait dus).

Want hij doet TOTAAL nix bij move_uploaded_file terwijl ik het EXACT hetzelfde heb gdn dan beschreven is. Btw, mijn $_FILES enzo werkt wel degelijk want voor dit stukje code heb ik er nog vanalles mee gdn om te testen of het een afbeelding is enzo. Het probleem ligt echt bij de move_uploaded_file :)
Code:
....
if (!fout){
$destination="images\\".basename($_FILES['avatar']['name']);
$temp=$_FILES['avatar']['tmp_name'];
if(move_uploaded_file($temp,$destination){
$uploadprobleem=true;
$messageuploadprobleem="Upload foutje!";
$fout=true;
}

Voor het testen heb ik ff gezet dat hij een foutmelding geeft ALS de file is gemoved is. Hij geeft dus niets, als ik het zet dat hij een fout geeft als er een echt probleem is geeft hij ook niets. Hij doet dus helemaal niets.

Die laatse $fout is btw(mocht iemand dit zich afvragen) op true gezet zodat hij niet alles in de database gaat steken als ik aan het testen ben.

zeldaTP

Legacy Member
je kunt regex gebruiken.

if $hobby =~ /[a-z ]/ hiermee kun je bepalen dat enkel letters en spaties ingevuld mogen worden.

zoek eens op google een Perl regex guide of zo. Je kunt er werkelijk alles mee includen of excluden

daarmee kun je patronen instellen en foutmeldingen laten geven.


zou wel in php script te steken moeten zijn. Anders cgi scriptje maken in perl. aan jou de keuze :)

tikketim

Legacy Member
ik zette vroeger altijd die gegevens in een session , als er iets verkeerd is ingevuld en het hele formulier komt terug , laat ik gewoon die session in het tekstvak verschijnen

ik weet wel niet of dit beter of veiliger is ?

yannick

Legacy Member
yannick zei:
Hmm, thnx. Kzal er is naar zien (alhoewel het nu opgelost is).

Dan heb ik nog een vraagje. Is het mogelijk om move_uploaded_file te gebruiken bij een apache2 server (die local draait dus).

Want hij doet TOTAAL nix bij move_uploaded_file terwijl ik het EXACT hetzelfde heb gdn dan beschreven is. Btw, mijn $_FILES enzo werkt wel degelijk want voor dit stukje code heb ik er nog vanalles mee gdn om te testen of het een afbeelding is enzo. Het probleem ligt echt bij de move_uploaded_file :)
Code:
....
if (!fout){
$destination="images\\".basename($_FILES['avatar']['name']);
$temp=$_FILES['avatar']['tmp_name'];
if(move_uploaded_file($temp,$destination){
$uploadprobleem=true;
$messageuploadprobleem="Upload foutje!";
$fout=true;
}

Voor het testen heb ik ff gezet dat hij een foutmelding geeft ALS de file is gemoved is. Hij geeft dus niets, als ik het zet dat hij een fout geeft als er een echt probleem is geeft hij ook niets. Hij doet dus helemaal niets.

Die laatse $fout is btw(mocht iemand dit zich afvragen) op true gezet zodat hij niet alles in de database gaat steken als ik aan het testen ben.

Iemand een idee :)?

*EDIT*
OMG, ik had fout ipv $fout stn. Dermee da hij nix deed :D.
Soms zit het toch in een klein hoekske ze :d.
grtz
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan