[PHP] Problemen met poll

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 17-09 15:43
Ik ben dus bezig met een poll, alleen loop ik tegen een probleem aan. Hoe kan ik controleren of een IP al in de database voorkomt?
Momenteel heb ik deze code, alleen hierbij wordt er niks weergegeven.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
        // Variabele voor het IP adres
        $ip = $_SERVER['REMOTE_ADDR'];
        // Query om het IP adres uit de database te halen
        $query = ("
            SELECT
                p_ip
            FROM
                poll
            WHERE
                INSTR(
                    `p_ip`, '" . $ip . "'
                )
            ORDER BY
                p_ip
            ASC")
        or die(mysql_error());
        $result = mysql_query($query) or die(mysql_error());
        // Controleer of het IP adres in de database staat
        if(mysql_num_rows($result) > 0)  {
            // Zoja, error weergeven
            echo("Gestemt");
        } else  {
            // Zonee, poll weergeven
            $pollsql = ("
                SELECT
                    p_id,
                    p_vraag,
                    p_optie_1,
                    p_optie_2,
                    p_optie_3,
                    p_optie_4,
                    p_optie_5,
                    p_optie_6
                FROM
                    poll
                ORDER BY
                    p_id
                DESC");
            $pollresult = mysql_query($pollsql) or die(mysql_error());
            while($poll = mysql_fetch_assoc($pollresult))  { ?>
        <div id="pollblock">
            <form method="get" action="$_SERVER['REMOTE_ADDR']" id="poll">
                <fieldset>
                    <legend><?=$poll['p_vraag']?></legend>
                    <span><label for="<?=$poll['p_optie_1']?>"><?=$poll['p_optie_1']?></label><input type="radio" id="<?=$poll['p_optie_1']?>" name="poll" value="<?=$poll['p_optie_1']?>" /></span>
                    <span><label for="<?=$poll['p_optie_2']?>"><?=$poll['p_optie_2']?></label><input type="radio" id="<?=$poll['p_optie_2']?>" name="poll" value="<?=$poll['p_optie_2']?>" /></span>
                    <span><label for="<?=$poll['p_optie_3']?>"><?=$poll['p_optie_3']?></label><input type="radio" id="<?=$poll['p_optie_3']?>" name="poll" value="<?=$poll['p_optie_3']?>" /></span>
                    <span><label for="<?=$poll['p_optie_4']?>"><?=$poll['p_optie_4']?></label><input type="radio" id="<?=$poll['p_optie_4']?>" name="poll" value="<?=$poll['p_optie_4']?>" /></span>
                    <span><label for="<?=$poll['p_optie_5']?>"><?=$poll['p_optie_5']?></label><input type="radio" id="<?=$poll['p_optie_5']?>" name="poll" value="<?=$poll['p_optie_5']?>" /></span>
                    <span><label for="<?=$poll['p_optie_6']?>"><?=$poll['p_optie_6']?></label><input type="radio" id="<?=$poll['p_optie_6']?>" name="poll" value="<?=$poll['p_optie_6']?>" /></span>
                    <span><label for="stem">Stem</label><input type="submit" id="stem" name="stem" value="Stem" /></span>
                </fieldset>
            </form>
        </div>
<?php
            }
        }     
?> 


Waarbij p_ip het veld in de database is waar alle IP adressen gelogd worden, en $ip de variabele met het IP adres van de bezoeker is.

Ik krijg verder geen errors of warnings of iets dergelijks. Hij blijft hoe dan ook niks weergeven.

Momenteel staat mijn IP adres trouwens niet in de database.

Ik heb het ook al op verschillende andere manieren geprobeert (Alle IPadressen uit de database in een array zetten d.m.v. array_push(), en dan met in_array() kijken of het IP in de database staat, maar dat gaf ook geen resultaat.

Wat doe ik nu fout??

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

HTML:
1
<form method="get" action="$_SERVER['REMOTE_ADDR']" id="poll">

waar wil je het resultaat van je formulier nou eigenlijk naar toe sturen?

[ Voor 5% gewijzigd door crisp op 27-06-2004 01:21 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 17-09 15:43
Nergens heen. :P
Hetgeen de bezoeker kiest moet meteen de database ingegooid worden :)
Maar ben wel een <? en ?> vergeten bij de actie van mijn formulier.

Of kan het niet op deze manier, en moet ik een externe pagina maken om de resultaten van de poll te kunnen bewerken?? (Ben niet zo heel goed in php)?

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
action="$_SERVER['REMOTE_ADDR']" wordt dan "action=212.238.220.*" in mijn geval.. Dus dan heb je het IP van diegene die de site bezoekt te pakken en probeer je je form dáárheen te sturen 8)7 .. Bij action moet dus gewoon de naam van je PHP-tje staan..

Waarom doe je trouwens INSTR()? Gewoon `p_ip` = ".$ip werkt ook hoor..

[ Voor 20% gewijzigd door Osiris op 27-06-2004 02:02 ]


Acties:
  • 0 Henk 'm!

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 17-09 15:43
Mijn form had zo moeten zijn:
PHP:
1
<form method="get" action="<?=$_SERVER['PHP_SELF']?>" id="poll">


Maar het werkt nog steeds niet. Ook niet als ik `p_ip` = '".$ip."' doe.

Wat doe ik fout dan?

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

kleautviool schreef op 27 juni 2004 @ 17:06:
Mijn form had zo moeten zijn:
PHP:
1
<form method="get" action="<?=$_SERVER['PHP_SELF']?>" id="poll">


Maar het werkt nog steeds niet. Ook niet als ik `p_ip` = '".$ip."' doe.

Wat doe ik fout dan?
Dat je ipv een assignment een echo moet gebruiken ? error_reporting(E_ALL); bovenin de code zal ook wel wat duidelijkheid scheppen.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

waar maak je je connectie naar de database? en waarom zet je een "or die" na een string-assignment ($query dus)?
igmar schreef op 27 juni 2004 @ 17:49:
[...]


Dat je ipv een assignment een echo moet gebruiken ? error_reporting(E_ALL); bovenin de code zal ook wel wat duidelijkheid scheppen.
die constructie is een short voor echo ;)

[ Voor 56% gewijzigd door crisp op 27-06-2004 18:22 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

crisp schreef op 27 juni 2004 @ 18:21:
die constructie is een short voor echo ;)
Ah :) Ik hou het wel bij echo. Blijft alleen de error_reporting() nog over van m'n post :)

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Het is trouwens niet verstandig om 'INSTR' te gebruiken hierzo; gebruik gewoon een equals (=), anders matched '12.12.12.12' namelijk op '212.12.12.122'. Daarnaast is een simpele vergelijking ook nog eens sneller :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$ip = $_SERVER['REMOTE_ADDR'];

$query_ip = mysql_query("SELECT ip_adres FROM tabel") or die(mysql_error());   
while($list_ip = mysql_fetch_array($query_ip))   
{   
     foreach($list_ip as $ip2) 
     {   
        if($ip == $ip2)   
        {   
        $check_ip = 1;   
        }   
     }

uit n erg oud poll scriptje van me....

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

g00fy schreef op 28 juni 2004 @ 00:27:
[...]
uit n erg oud poll scriptje van me....
beetje overkill om meteen maar de hele tabel uit te lezen dunkt me ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • ikke007
  • Registratie: Juni 2001
  • Laatst online: 18-09 14:10
'Conversatie over 5 weken op een nader te noemen site, 20.000 hits per dag'

-"Ey die poll is echt goed man!"
- "ja he! alleen lijkt het wel alsof hij steeds langzamer wordt bij het versturen.."
- "Tja hij is ook al 28.000x ingevuld... zou dat iets te maken kunnen hebben met de controle op bestaande ip adressen? "

:P

// on to the real stuff

in je code staat DIT:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
       // Query om het IP adres uit de database te halen 
        $query = (" 
            SELECT 
                p_ip 
            FROM 
                poll 
            WHERE 
                INSTR( 
                    `p_ip`, '" . $ip . "' 
                ) 
            ORDER BY 
                p_ip 
            ASC") 
        or die(mysql_error());


waarom OR die(mysql_error()); bij het definieëren van een variabelen? hij die't dus, en geeft geen foutmelding terug van mysql omdat deze nog helemaal niet gebruikt is!

Dus haal or die(mysql_error()); weg en hij zal het wellicht doen
verder is INSTR() totaal overbodig, gewoon where p_ip = '".$ip."' en gaan met die banaan

[ Voor 13% gewijzigd door ikke007 op 28-06-2004 09:55 . Reden: ja uhhhhh weetikut! :) ]

Lets remove all security labels and let the problem of stupidity solve itself


Acties:
  • 0 Henk 'm!

  • JaFFoG
  • Registratie: Januari 2003
  • Laatst online: 22-11-2024
En haakjes om een string-definitie?

$query = ("....")

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
        $query = (" 
            SELECT 
                p_ip 
            FROM 
                poll 
            WHERE 
                INSTR( 
                    `p_ip`, '" . $ip . "' 
                ) 
            ORDER BY 
                p_ip 
            ASC") 
        or die(mysql_error());

Daar heb ik nog nooit van gehoord, om nog maar te zwijgen over het feit dat dit natuurlijk niet werkt (heb het even geprobeerd met een simpele test "Hello World" B))

Bla

Pagina: 1