Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Redirect loop probleem [PHP? .htaccess?]

Pagina: 1
Acties:

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Geachte Tweakers,

onlangs wou ik mijn site online zetten op een testserver (000webhost).
Hierbij maakte ik alle databases aan en importeerde ik de files van mijn localhost naar mijn online server (in de map public_html).
Ook paste ik de 'mysql_connect'- gegevens aan aan die van de online server (ik veronderstel dat deze gegevens correct zijn).
Nu stoot ik op het probleem van een zogenaamde "deze webpagina bevat een omleidingslus"(oftewel redirect loop)-error die mijn google chrome browser weergaf. Op mijn localhost echter gaf dit geen problemen.
Weet wel dat ik op mn localhost GEEN .htaccess file had, maar ook al verwijder ik deze file op de online server, het probleem blijft.
Ik heb al enkele sites online staan, maar nog nooit heb ik zo'n probleem gehad.
Alle hulp wordt geapprecieerd.

Bibbox3

BTW: mijn .htaccess code is de volgende:
 # Do not remove this line, otherwise mod_rewrite rules will stop working

RewriteRule/index.php

Verwijderd

Lees je eens in hier: http://httpd.apache.org/d..._rewrite.html#rewriterule en dan snap je na een tijdje wel wat je fout doet. Daarnaast staan er ontzettend veel tutorials online over het gebruik van RewriteRule. :)

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Super bedankt, zal ik zeker doen. Ik ben immers nog niet echt thuis in de server configuratie, enkel php, sql en html.
Nogmaals bedankt

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
ok, heb dit artikel proberen te lezen en begrijpen maar ik denk niet dat ik over de nodige kennis beschik om het volledig te begrijpen.
Wat is de oorzaak van deze error? Ik begrijp er werkelijk niets van! :/
Alle hulp wordt geapprecieerd
BTW: dit is mn nieuwe .htaccess code:
# Do not remove this line or mod_rewrite rules and search engine friendly URLs will stop working
RewriteBase /

[ Voor 25% gewijzigd door bibbox3 op 01-11-2012 17:09 ]


Verwijderd

Een omleidingslus komt doordat een url constant matched.

Een rewriteurl als:
RewriteRule /home /home

Zal een omleidingslus veroorzaken. Apache maakt van /home namelijk /home en /home wordt weer /home etc.....

Probeer het eens simpel en maak een rewriterule die heel basis is zoiets als deze:
code:
1
2
RewriteEngine on
RewriteRule ^test.html$ index.html


Waarbij test.html dus naar index.html gaat

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
ok maar wat doe ik dan verkeerd aangezien ik geen probleemmelding krijg als ik gewoon mn localhost gebruik? Ligt het wel aan mijn .htaccess file of zit er een fout in mn index.php file?

[ Voor 26% gewijzigd door bibbox3 op 01-11-2012 17:48 ]


Verwijderd

Leesvoer: Programming FAQ - Algemeen

De vragen die je stelt kun je zelf makkelijk oplossen. Isoleer het probleem en dan kun je het zo oplossen. En daarnaast kan ik helaas vanaf hier niet in mijn glazen bol kijken wat er mis is ;)

  • hylke94
  • Registratie: Maart 2012
  • Laatst online: 23-09 16:26
Ik heb hier ook last van gehad met Chrome. Zelfs na het wijzigen van het .htaccess bestand. Na even zoeken kwam ik er achter dat chrome zelfs de .htaccess-bestanden cached. Nadat ik de cache had leeggegooid, werkte mijn website weer. Misschien moet jij hem ook eens leeghalen?

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Chrome cached uiteraard niet de .htaccess bestanden, want die kun je niet eens opvragen vanuit de browser.

  • hylke94
  • Registratie: Maart 2012
  • Laatst online: 23-09 16:26
Dat stond anders wel op stackoverflow. En na het verwijderen van de cache werkte alles wel weer ;).

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Verwijderd schreef op vrijdag 02 november 2012 @ 09:51:
Leesvoer: Programming FAQ - Algemeen

De vragen die je stelt kun je zelf makkelijk oplossen. Isoleer het probleem en dan kun je het zo oplossen. En daarnaast kan ik helaas vanaf hier niet in mijn glazen bol kijken wat er mis is ;)
heb al heel wat gedebugged, maar ik beschik niet over voldoende kennis over het.htaccess bestand om een degelijke oplossing te vinden
mijn redirection systeem zit als volgt in elkaar:
index.php
-form one met "button" tags (nietinput type: button) --> post method: page1.php

-form two met "button" tags (niet input type: button) --> post method: page2.php

-form three met "button" tags (niet input type: button) --> post method: page3.php

page1.php:

-php/sql processing (inserting variables in database, calculating them, ...)

-header(location: index.php)(automatisch gerund na de voorafgaande php code)

page2.php:

-php/sql processing (inserting variables in database, variabelen berekenen, ...)

-header(location: index.php)(automatisch gerund na de voorafgaande php code)

page3.php:

-onmiddelijk uitvoeren van een header(location: index.php);

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
hylke94 schreef op vrijdag 02 november 2012 @ 10:47:
Dat stond anders wel op stackoverflow. En na het verwijderen van de cache werkte alles wel weer ;).
Heb al mn cache verwijderd, lukt nog steeds niet...
index.php
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
    session_start();
//connect to database
    include 'connect.php';
     
//get number of pictures and so the highest id
    $result = mysql_query("SELECT * FROM pics ORDER BY id DESC LIMIT 1");
    $row = mysql_fetch_array($result);
    $maxid = $row['id'];
//get random id of pictures
    $id_pic_1 = rand(1, $maxid);
    $id_pic_2 = rand(1, $maxid);
    
            
    if ($id_pic_1 == $id_pic_2){
        header('Location: index.php'); //redo the random id searching
    }else{
        if($_SESSION['chosen_id_1'] != $id_pic_1 || $_SESSION['chosen_id_2'] != $id_pic_2){
            $_SESSION['chosen_id_1'] = $id_pic_1;
            $_SESSION['chosen_id_2'] = $id_pic_2;
        }else{
            header('Location: index.php'); //redo the random id searching
        }
    }
//get address of picture 1
    $result = mysql_query("SELECT * FROM pics WHERE id='$id_pic_1'");
    $row = mysql_fetch_array($result);
    $address_pic_1 = "pictures/".$row['filename'];
    
//get address of picture 2
    $result = mysql_query("SELECT * FROM pics WHERE id='$id_pic_2'");
    $row = mysql_fetch_array($result);
    $address_pic_2 = "pictures/".$row['filename'];
     
//save the id of picture 1
    $_SESSION['id_pic_1'] = $id_pic_1;
//save the id of picture 2
    $_SESSION['id_pic_2'] = $id_pic_2;
    
//get name of picture 1
    $result = mysql_query("SELECT * FROM pics WHERE id='$id_pic_1'");
    $row = mysql_fetch_array($result);
    $name_1 = $row['name'];
    
//get name of picture 2
    $result = mysql_query("SELECT * FROM pics WHERE id='$id_pic_2'");
    $row = mysql_fetch_array($result);
    $name_2 = $row['name'];
    
//get data of rankings
    
    $result_first = mysql_query("SELECT * FROM pics ORDER BY Rating DESC LIMIT 1");
    $row_first = mysql_fetch_array($result_first);
    
    $id_first = $row_first['id'];
    $rating_first = $row_first['Rating'];
    $address_first = "pictures/".$row_first['filename'];
    $name_first = $row_first['name'];
    $votes_first = $row_first['votes'];
    
    $result_second = mysql_query("SELECT * FROM pics WHERE (Rating <= '$rating_first') AND (id <> '$id_first') ORDER BY Rating DESC LIMIT 1 ");
    $row_second = mysql_fetch_array($result_second);
    
    $id_second = $row_second['id'];
    $rating_second = $row_second['Rating'];
    $address_second = "pictures/".$row_second['filename'];
    $name_second = $row_second['name'];
    $votes_second = $row_second['votes'];
    
    $result_third = mysql_query("SELECT * FROM pics WHERE (Rating <= '$rating_second') AND (id <> '$id_second') ORDER BY Rating DESC LIMIT 1 ");
    $row_third = mysql_fetch_array($result_third);
    
    $id_second = $row_second['id'];
    $rating_third = $row_third['Rating'];
    $address_third = "pictures/".$row_third['filename'];
    $name_third = $row_third['name'];
    $votes_third = $row_third['votes'];
    
?>

HTML: index.php
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!DOCTYPE html>
<html>
    </head>
        <title>title of site</title>
        <link rel="stylesheet" type="text/css" href="style_index.css">
        <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
    </head>
    <body>  
        <div id="header">
            <div>
                <h1>main title</h1>
            </div>
        </div>
        <div id="main">
            <div id="intro">
                <h2>Title</h2>
            </div>
            
            <div id="content">  
                    <div id="picspace_1">
                        <form action="vote_pic_1.php" method="post">
                            <button class="images" onclick="vote_pic_1()" accesskey="h">
                                <div id="pic_1">
                                    <img title="Alt + H" class="images" src="<?php echo $address_pic_1;?>"/>
                                </div>
                                <div id="name_1">
                                    <?php echo $name_1;?>
                                </div>
                            </button>
                        </form>
                    </div>
                    
                    <div id="picspace_2">
                        <form action="vote_pic_2.php" method="post">
                            <button class="images" onclick="" accesskey="k">
                                <div id="pic_2">
                                    <img title="Alt + K" class="images" src="<?php echo $address_pic_2;?>"/>
                                </div>
                                <div id="name_2">
                                    <?php echo $name_2;?>
                                </div>
                            </button>
                        </form>
                    </div>
                    
                    <div id="middle_button">
                        <div id="no_idea">
                            <form action="no_idea.php" method="post">
                                <button class="no_idea" onclick="" accesskey="j">
                                    <p class="no_idea" title="Alt + J" >I don't know these celebrities</p>
                                </button>
                            </form>
                        </div> 
                    </div>
            </div>
            
            <div id="rankings">
                <div id="ranking_list">
                    <div class="first">
                        <div id="image_first">
                            <img class="first" src="<?php echo $address_first; ?>"/>
                        </div>
                        <div id="data_first">
                            <p id="first_rank">N&deg1 </p><br/>
                            <p id="first_name"><?php echo $name_first; ?></p><br/>
                            <br/><br/>
                            <div id="votes"><p id="first_votes"><?php echo $votes_first; ?></p></div>
                        </div>
                    </div>
                    
                    <div class="other">
                        <div id="image_other">
                            <img class="other" src="<?php echo $address_second; ?>"/>
                        </div>
                        <div id="data_other">
                            <p id="other_rank">N&deg2 </p><br/>
                            <p id="other_name"><?php echo $name_second; ?></p><br/>
                            <br/><br/>
                            <div id="votes"><p id="other_votes"><?php echo $votes_second; ?></p></div>
                        </div>
                    </div>
                    
                    <div class="other">
                        <div id="image_other">
                            <img class="other" src="<?php echo $address_third; ?>"/>
                        </div>
                        <div id="data_other">
                            <p id="other_rank">N&deg3 </p><br/>
                            <p id="other_name"><?php echo $name_third; ?></p><br/>
                            <br/><br/>
                            <div id="votes"><p id="other_votes"><?php echo $votes_third; ?></p></div>
                        </div>
                    </div>
                </div>
            </div>
            
        </div>
        <footer>

        </footer>
    </body>
</html>

  • hylke94
  • Registratie: Maart 2012
  • Laatst online: 23-09 16:26
Wat is nou precies de bedoeling van deze code dan? Heb je ergens een voorbeeld online staan?

NB: Kun je het tweede stuk code in aparte code-tags zetten voor html? Leest wat makkelijker.

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
hylke94 schreef op vrijdag 02 november 2012 @ 10:47:
Dat stond anders wel op stackoverflow. En na het verwijderen van de cache werkte alles wel weer ;).
Heb al mn cache verwijderd, lukt nog steeds niet...
index.php
vote_pic_1.php
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php 
    session_start();
    $id_pic_1 = $_SESSION['id_pic_1'];
    $id_pic_2 = $_SESSION['id_pic_2'];
//connect to database
    include 'connect.php';
      
//add one vote to picture
    //select the right picture
    $result = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_1'");
    $row = mysql_fetch_array($result);
    
    $original_votes = $row['votes'];
    settype($original_votes, "integer");
    $new_votes = $original_votes + 1;
    
    settype($new, "integer");
    $update = mysql_query("UPDATE pics SET votes = replace( votes, '$original_votes', '$new_votes' ) WHERE id= '$id_pic_1';");
    if (!$update){
        die('Could not connect: ' . mysql_error());
    }
    
//add one load to the pictures
    //pic 1
    $result_1 = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_1'");
    $row_1 = mysql_fetch_array($result_1);
    
    $original_loads_1 = $row_1['loads'];
    settype($original_loads_1, "integer");
    $new_loads_1 = $original_loads_1 + 1;
    
    settype($new_loads_1, "integer");
    $update = mysql_query("UPDATE pics SET loads = replace( loads, '$original_loads_1', '$new_loads_1' ) WHERE id= '$id_pic_1';");
    if (!$update){
        die('Could not connect: ' . mysql_error());
    }
    
    //pic 2
    $result_2 = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_2'");
    $row_2 = mysql_fetch_array($result_2);
    
    $original_loads_2 = $row_2['loads'];
    settype($original_loads_2, "integer");
    $new_loads_2 = $original_loads_2 + 1;
    
    settype($new_loads_2, "integer");
    $update = mysql_query("UPDATE pics SET loads = replace( loads, '$original_loads_2', '$new_loads_2' ) WHERE id= '$id_pic_2';");
    if (!$update){
        die('Could not connect: ' . mysql_error());
    }
    
//adjust the rating
    
    $result_A = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_1'");
    $row_A = mysql_fetch_array($result_A);
    $R_A = $row_A['Rating'];
    settype($R_A, "integer");
    
    $result_B = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_2'");
    $row_B = mysql_fetch_array($result_B);
    $R_B = $row_B['Rating'];
    settype($R_B, "integer");
    
    $K = 16;
    $S_A = 1;
    $S_B = 0;
    
    //calculate exspectations
    
    $E_A = 1/(1+ pow(10, (($R_B-$R_A)/400)));
    $E_B = 1/(1+ pow(10, (($R_A-$R_B)/400)));
    
    //calculate new ratings
    
    $NR_A = $R_A + $K * ($S_A - $E_A);
    $NR_B = $R_B + $K * ($S_B - $E_B);
    
    //verify new ratings
    $maxdifference = 15;
    
        //A
    if($NR_A-$R_A > $maxdifference){ 
        $NR_A = $R_A + $maxdifference;
    }
    else if($R_A-$NR_A > $maxdifference){ 
        $NR_A = $R_A - $maxdifference;
    }
    if ($NR_A < 0){ $NR_A = 0;}
        //B
    if($B-$R_B > $maxdifference){ 
        $NR_B = $R_B + $maxdifference;
    }
    else if($R_B-$NR_B > $maxdifference){ 
        $NR_B = $R_B - $maxdifference;
    }
    if ($NR_B < 0){ $NR_B = 0;}
    
    //insert new ratings
        //$NR_A
        $update = mysql_query("UPDATE pics SET Rating = replace( Rating, '$R_A', '$NR_A' ) WHERE id= '$id_pic_1';");
        if (!$update){
            die('Could not connect: ' . mysql_error());
        }
        //$NR_B
        $update = mysql_query("UPDATE pics SET Rating = replace( Rating, '$R_B', '$NR_B' ) WHERE id= '$id_pic_2';");
        if (!$update){
            die('Could not connect: ' . mysql_error());
        }
    
    
//error test
    
//go back to index page
    header('Location: index.php');
?>

vote_pic_2.php
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
    session_start();
    $id_pic_1 = $_SESSION['id_pic_1'];
    $id_pic_2 = $_SESSION['id_pic_2'];
//connect to database
    include 'connect.php';
      
//add one vote to picture
    //select the right picture
    $result = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_2'");
    $row = mysql_fetch_array($result);
    
    $original = $row['votes'];
    settype($original, "integer");
    $new = $original + 1;
    
    settype($new, "integer");
    $update = mysql_query("UPDATE pics SET votes = replace( votes, '$original', '$new' ) WHERE id= '$id_pic_2';");
    if (!$update){
        die('Could not connect: ' . mysql_error());
    }
    
//add one load to the pictures
    //pic 1
    $result_1 = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_1'");
    $row_1 = mysql_fetch_array($result_1);
    
    $original_loads_1 = $row_1['loads'];
    settype($original_loads_1, "integer");
    $new_loads_1 = $original_loads_1 + 1;
    
    settype($new_loads_1, "integer");
    $update = mysql_query("UPDATE pics SET loads = replace( loads, '$original_loads_1', '$new_loads_1' ) WHERE id= '$id_pic_1';");
    if (!$update){
        die('Could not connect: ' . mysql_error());
    }
    
    //pic 2
    $result_2 = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_2'");
    $row_2 = mysql_fetch_array($result_2);
    
    $original_loads_2 = $row_2['loads'];
    settype($original_loads_2, "integer");
    $new_loads_2 = $original_loads_2 + 1;
    
    settype($new_loads_2, "integer");
    $update = mysql_query("UPDATE pics SET loads = replace( loads, '$original_loads_2', '$new_loads_2' ) WHERE id= '$id_pic_2';");
    if (!$update){
        die('Could not connect: ' . mysql_error());
    }
    //adjust the rating
    
    $result_A = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_1'");
    $row_A = mysql_fetch_array($result_A);
    $R_A = $row_A['Rating'];
    settype($R_A, "integer");
    
    $result_B = mysql_query("SELECT * FROM pics WHERE id = '$id_pic_2'");
    $row_B = mysql_fetch_array($result_B);
    $R_B = $row_B['Rating'];
    settype($R_B, "integer");
    
    $K = 16;
    $S_A = 0;
    $S_B = 1;
    
    //calculate exspectations
    
    $E_A = 1/(1+ pow(10, (($R_B-$R_A)/400)));
    $E_B = 1/(1+ pow(10, (($R_A-$R_B)/400)));
    
    //calculate new ratings
    
    $NR_A = $R_A + $K * ($S_A - $E_A);
    $NR_B = $R_B + $K * ($S_B - $E_B);
        
    //verify new ratings
    $maxdifference = 15;
    
        //A
    if($NR_A-$R_A > $maxdifference){ 
        $NR_A = $R_A + $maxdifference;
    }
    else if($R_A-$NR_A > $maxdifference){ 
        $NR_A = $R_A - $maxdifference;
    }
    if ($NR_A < 0){ $NR_A = 0;}
        //B
    if($B-$R_B > $maxdifference){ 
        $NR_B = $R_B + $maxdifference;
    }
    else if($R_B-$NR_B > $maxdifference){ 
        $NR_B = $R_B - $maxdifference;
    }
    if ($NR_B < 0){ $NR_B = 0;}
    
    
    //insert new ratings
        //$NR_A
        $update = mysql_query("UPDATE pics SET Rating = replace( Rating, '$R_A', '$NR_A' ) WHERE id= '$id_pic_1';");
        if (!$update){
            die('Could not connect: ' . mysql_error());
        }
        //$NR_B
        $update = mysql_query("UPDATE pics SET Rating = replace( Rating, '$R_B', '$NR_B' ) WHERE id= '$id_pic_2';");
        if (!$update){
            die('Could not connect: ' . mysql_error());
        }
    
//error test
    
//go back to index page
    header('Location: index.php');
    
?>

no_idea.php
PHP:
1
2
3
<?php
 header('location: index.php');
?>

.htaccess
code:
1
2
# Do not remove this line or mod_rewrite rules and search engine friendly URLs will stop working
RewriteBase /

en mijn mappenstructuur is de volgende:
1) public_html
a) pictures (folder met alle afbeeldingen)
1. afbeelding
2. afbeelding
3. afbeelding
4. ...
b) index.php
c) vote_pic_1.php
d) vote_pic_2.php
e) connect.php
f) no_idea.php
g).htaccess

  • hylke94
  • Registratie: Maart 2012
  • Laatst online: 23-09 16:26
Ik weet niet wat jij van plan bent met je .htaccess, maar zoals hij hier nu staat doet hij ook niks. Er staat geen enkele rule in, dus hij wijzigt geen enkele url...

Edit:
Op welke link/knop moet er gedrukt worden om de loop te "activeren"? Kunnen wij dit ook online zien (webadres)?

[ Voor 26% gewijzigd door hylke94 op 02-11-2012 11:46 ]


  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
hylke94 schreef op vrijdag 02 november 2012 @ 11:42:
Ik weet niet wat jij van plan bent met je .htaccess, maar zoals hij hier nu staat doet hij ook niks. Er staat geen enkele rule in, dus hij wijzigt geen enkele url...
dat weet ik, dan ligt het dus aan mn index.php file, maar wat doe ik daar verkeerd?

  • hylke94
  • Registratie: Maart 2012
  • Laatst online: 23-09 16:26
Zie edit vorige bericht.

Trouwens: In regel 16 van je index ga je reloaden als de variabelen gelijk zijn. Kun je hier niet beter een loopje van maken die steeds nieuwe waardes in de variabelen zet totdat ze niet meer gelijk zijn? En anders even een "exit;" oid direct onder de header zetten, anders gaat ie eerst de hele pagina nog laden, voordat hij doorgestuurd wordt.

Edit: Zelfde geldt voor regel 22.

[ Voor 4% gewijzigd door hylke94 op 02-11-2012 11:54 ]


  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:50
Sorry maar volgens mij slaat deze code echt nergens op.

Je haalt eerst het ID op van je laatste item, en dat is dan ook het aantal rijen? Wat als er nou een plaatje mist?
En als je per ongeluk 2 dezelfde hebt, redirect je maar weer naar index.php?
Dan sla je ze op in een sessie, behalve als je ze ooit gehad hebt, en anders maar gewoon weer redirecten?
Daarna de foto's ophalen, nog een keer opslaan in je sessie, en dan nog een keer dezelfde gegevens ophalen.
En dan haal je alle rankings op, niet die van de betreffende foto?

Als je nou eens begint met niet steeds redirecten, want dikke kans dat je daar iets fout doet. Bijvoorbeeld dat je steeds dezelfde resultaten krijgt om een of andere fout. Print even waarom je zou willen redirecten, in plaats van ook echt redirecten.

En daarnaast, gooi deze code weg en begin overnieuw. Je kan bijvoorbeeld ook met MySQL ook random rijen op laten halen (ORDER BY RAND()), en als je hem al gehad hebt, de volgende rij ophalen bijvoorbeeld. (Of de id's die je al gehad hebt, uitsluiten). En als je doet SELECT * dan heb je dus in dat resultaat je naam én je filename zitten, dan hoef je niet 2 keer hetzelfde te doen..

  • Soundless
  • Registratie: November 2008
  • Laatst online: 29-10 16:54
Begin hier eens mee:

- Start chrome
- Druk op F12
- Open de pagina
- Kijk welke loop er plaatsvindt

Een oneindige loop wil niet zeggen dat je op dezelfde pagina blijft hangen. Het zou net zo goed kunnen dat je heen en weer wordt geknikkert. Kijk welke doorverwijzingen er gedaan worden. Kijk ook even naar de statuscodes.

De .htaccess worrdt natuurlijk niet in de browser gecached.... Wat wel kan is dat de statuscodes gecachet worden.

Disclaimer: Deze post is alleen bedoeld om te helpen met debuggen. Ik ben het er volledig mee eens dat de code ruk is en ik hoop dan ook dat zoiets nooit live komt te staan maar dat je gewoon wat oefent.

[ Voor 19% gewijzigd door Soundless op 02-11-2012 12:01 ]


  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Barryvdh schreef op vrijdag 02 november 2012 @ 11:54:
Sorry maar volgens mij slaat deze code echt nergens op.

Je haalt eerst het ID op van je laatste item, en dat is dan ook het aantal rijen? Wat als er nou een plaatje mist?
En als je per ongeluk 2 dezelfde hebt, redirect je maar weer naar index.php?
Dan sla je ze op in een sessie, behalve als je ze ooit gehad hebt, en anders maar gewoon weer redirecten?
Daarna de foto's ophalen, nog een keer opslaan in je sessie, en dan nog een keer dezelfde gegevens ophalen.
En dan haal je alle rankings op, niet die van de betreffende foto?

Als je nou eens begint met niet steeds redirecten, want dikke kans dat je daar iets fout doet. Bijvoorbeeld dat je steeds dezelfde resultaten krijgt om een of andere fout. Print even waarom je zou willen redirecten, in plaats van ook echt redirecten.

En daarnaast, gooi deze code weg en begin overnieuw. Je kan bijvoorbeeld ook met MySQL ook random rijen op laten halen (ORDER BY RAND()), en als je hem al gehad hebt, de volgende rij ophalen bijvoorbeeld. (Of de id's die je al gehad hebt, uitsluiten). En als je doet SELECT * dan heb je dus in dat resultaat je naam én je filename zitten, dan hoef je niet 2 keer hetzelfde te doen..
Bedankt, inderdaad, mijn code is vrij crappy, mar weet dat ik nog maar weinig ervaring heb met dergelijke websites en dat mijn 'opleiding' bestaat uit online tutorials op youtube. Bedankt iedereen voor de hulp, ik zal eerst mn index.php file volledig aanpassen, later geef ik jullie dan de code als er nog problemen zijn.
Nogmaals bedankt, Bibbox3

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
hylke94 schreef op vrijdag 02 november 2012 @ 11:42:
Ik weet niet wat jij van plan bent met je .htaccess, maar zoals hij hier nu staat doet hij ook niks. Er staat geen enkele rule in, dus hij wijzigt geen enkele url...

Edit:
Op welke link/knop moet er gedrukt worden om de loop te "activeren"? Kunnen wij dit ook online zien (webadres)?
op geen enkele knop dient er gedrukt te worden, de loop start bij het loaden van de index.php pagina

  • hylke94
  • Registratie: Maart 2012
  • Laatst online: 23-09 16:26
bibbox3 schreef op vrijdag 02 november 2012 @ 12:03:
[...]

op geen enkele knop dient er gedrukt te worden, de loop start bij het loaden van de index.php pagina
Dan komt het dus misschien door die header. Een tip: je kunt in je query ook aangeven welke records hij niet moet ophalen. Where id <> id_1 and id <> id_2.

  • Soundless
  • Registratie: November 2008
  • Laatst online: 29-10 16:54
Ik had even zin om het iets te verbeteren. Misschien dat je er iets van leert, misschien ook niet:

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
// In dit voorbeeld worden de oude mysql functies gebruikt om het niet moeilijker te maken voor de topicstarter.
// Veel beter zou zijn om mysqli of PDO te gebruiken.

session_start();
include 'connect.php';

$id_pic_1 = null;
$id_pic_2 = null;
$name_1 = null; 
$name_2 = null; 

$query = 'SELECT * FROM pics ORDER BY RAND() LIMIT 4';
$res = mysql_query($query);

// Haal data eerste item op.
while ($id_pic_1 === null && $row=mysql_fetch_assoc($res))
{
    $id = (int)$row['id'];
    $name = $row['name'];
    if ($_SESSION['id_pic_1'] != $id)
    {
        $id_pic_1 = $id;
        $name_1 = $row['name'];
    }
}

// Haal data tweede item op.
while ($id_pic_2 === null && $row=mysql_fetch_assoc($res))
{
    $id = (int)$row['id'];
    $name = $row['name'];
    if ($_SESSION['id_pic_2'] != $id)
    {
        $id_pic_2 = $id;
        $name_2 = $row['name'];
    }
}

// Controleer of items opgehaald zijn
if ($id_pic_2 === null)
{
    // Possible reason:
    //  - Not enough records in database to produce unique results.
    echo 'FAIL';
    die();
}

// Vul sessie
$_SESSION['id_pic_1'] = $id_pic_1;
$_SESSION['id_pic_2'] = $id_pic_2;

// Draai query om top 3 op te halen
$res = mysql_query("SELECT * FROM pics ORDER BY Rating DESC LIMIT 3"); 
 
// Vul array met de data voor de top 3
$data = array();
while($row=mysql_fetch_assoc($res))
{
    $data[] = array(
        'id' => $row['id'],
        'rating' => $row['Rating'],
        'address' => "pictures/".$row_first['filename'],
        'name' => $row['name'],
        'votes' => $row['votes'],
    );
}

/*

first item = $data[0]
first item name = $data[0]['name']

second item = $data[1]
second item name = $data[1]['name']

*/


Je moet nog wel even de html hierop aanpassen (zie laatste comment in code voor een korte how to)

Dit is uit de losse pols geschreven. Je moet dus de syntax errors die er mogelijk in zitten wel even uithalen.

Edit: comments toegevoegd

[ Voor 5% gewijzigd door Soundless op 02-11-2012 12:40 ]


  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Soundless schreef op vrijdag 02 november 2012 @ 12:33:
Ik had even zin om het iets te verbeteren. Misschien dat je er iets van leert, misschien ook niet:

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
// In dit voorbeeld worden de oude mysql functies gebruikt om het niet moeilijker te maken voor de topicstarter.
// Veel beter zou zijn om mysqli of PDO te gebruiken.

session_start();
include 'connect.php';

$id_pic_1 = null;
$id_pic_2 = null;
$name_1 = null; 
$name_2 = null; 

$query = 'SELECT * FROM pics ORDER BY RAND() LIMIT 4';
$res = mysql_query($query);

// Haal data eerste item op.
while ($id_pic_1 === null && $row=mysql_fetch_assoc($res))
{
    $id = (int)$row['id'];
    $name = $row['name'];
    if ($_SESSION['id_pic_1'] != $id)
    {
        $id_pic_1 = $id;
        $name_1 = $row['name'];
    }
}

// Haal data tweede item op.
while ($id_pic_2 === null && $row=mysql_fetch_assoc($res))
{
    $id = (int)$row['id'];
    $name = $row['name'];
    if ($_SESSION['id_pic_2'] != $id)
    {
        $id_pic_2 = $id;
        $name_2 = $row['name'];
    }
}

// Controleer of items opgehaald zijn
if ($id_pic_2 === null)
{
    // Possible reason:
    //  - Not enough records in database to produce unique results.
    echo 'FAIL';
    die();
}

// Vul sessie
$_SESSION['id_pic_1'] = $id_pic_1;
$_SESSION['id_pic_2'] = $id_pic_2;

// Draai query om top 3 op te halen
$res = mysql_query("SELECT * FROM pics ORDER BY Rating DESC LIMIT 3"); 
 
// Vul array met de data voor de top 3
$data = array();
while($row=mysql_fetch_assoc($res))
{
    $data[] = array(
        'id' => $row['id'],
        'rating' => $row['Rating'],
        'address' => "pictures/".$row_first['filename'],
        'name' => $row['name'],
        'votes' => $row['votes'],
    );
}

/*

first item = $data[0]
first item name = $data[0]['name']

second item = $data[1]
second item name = $data[1]['name']

*/


Je moet nog wel even de html hierop aanpassen (zie laatste comment in code voor een korte how to)

Dit is uit de losse pols geschreven. Je moet dus de syntax errors die er mogelijk in zitten wel even uithalen.

Edit: comments toegevoegd
thx, zal ik doen

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
lukt nog steeds niet. Heb alle headers verwijderd en blijf met hetzelfde probleem zitten, wat ik wel hééél raar vind is dat er geen enkel probleem is als ik gewoon mijn localhost gebruik...

  • hylke94
  • Registratie: Maart 2012
  • Laatst online: 23-09 16:26
Je zou zeggen dat dat niet kan, want er is nergens meer een (redirect)header in bovenstaande code...

  • Soundless
  • Registratie: November 2008
  • Laatst online: 29-10 16:54
weet je zeker dat je de juiste file aan het aanpassen bent? Hoe ziet connect.php eruit? Heb je een url?

[ Voor 3% gewijzigd door Soundless op 02-11-2012 14:54 ]


  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Probleem is opgelost! Dit is mn neuwe index.php code:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
    session_start();

//connect to database
    include 'connect.php';

//get number of pictures and so the highest id
    $result_num_rows = mysql_query("SELECT * FROM pics");
    $num_rows = mysql_num_rows($result_num_rows);
        
    $id_pic_1 = rand(1, $num_rows);
    $id_pic_2 = rand(1, $num_rows);
        
        if (!$_SESSION['chosen_id_1']){
            $_SESSION['chosen_id_1'] = rand(1, $num_rows);
        }
        if (!$_SESSION['chosen_id_2']){
            $_SESSION['chosen_id_2'] = rand(1, $num_rows);
        }
            
        if ($id_pic_1 === $id_pic_2){
            header('Location: index.php');
        }else{
            if($_SESSION['chosen_id_1'] + $_SESSION['chosen_id_2'] !== $id_pic_1 + $id_pic_2){
                $_SESSION['chosen_id_1'] = $id_pic_1;
                $_SESSION['chosen_id_2'] = $id_pic_2;
            }else{
                header('Location: index.php');
            }
        }

//get address of picture 1
    $result = mysql_query("SELECT * FROM pics WHERE id='$id_pic_1'");
    $row = mysql_fetch_array($result);
    $address_pic_1 = "pictures/".$row['filename'];
    
//get address of picture 2
    $result = mysql_query("SELECT * FROM pics WHERE id='$id_pic_2'");
    $row = mysql_fetch_array($result);
    $address_pic_2 = "pictures/".$row['filename'];
    
//get name of picture 1
    $result = mysql_query("SELECT * FROM pics WHERE id='$id_pic_1'");
    $row = mysql_fetch_array($result);
    $name_1 = $row['name'];
    
//get name of picture 2
    $result = mysql_query("SELECT * FROM pics WHERE id='$id_pic_2'");
    $row = mysql_fetch_array($result);
    $name_2 = $row['name'];
    
//get data of rankings
    
    $result_first = mysql_query("SELECT * FROM pics ORDER BY Rating DESC LIMIT 1");
    $row_first = mysql_fetch_array($result_first);
    
    $id_first = $row_first['id'];
    $rating_first = $row_first['Rating'];
    $address_first = "pictures/".$row_first['filename'];
    $name_first = $row_first['name'];
    $votes_first = $row_first['votes'];
    
    $result_second = mysql_query("SELECT * FROM pics WHERE (Rating <= '$rating_first') AND (id <> '$id_first') ORDER BY Rating DESC LIMIT 1 ");
    $row_second = mysql_fetch_array($result_second);
    
    $id_second = $row_second['id'];
    $rating_second = $row_second['Rating'];
    $address_second = "pictures/".$row_second['filename'];
    $name_second = $row_second['name'];
    $votes_second = $row_second['votes'];
    
    $result_third = mysql_query("SELECT * FROM pics WHERE (Rating <= '$rating_second') AND (id <> '$id_second') ORDER BY Rating DESC LIMIT 1 ");
    $row_third = mysql_fetch_array($result_third);
    
    $id_second = $row_second['id'];
    $rating_third = $row_third['Rating'];
    $address_third = "pictures/".$row_third['filename'];
    $name_third = $row_third['name'];
    $votes_third = $row_third['votes'];
    
?>

bedankt iedereen voor de hulp

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Waarom doe je aparte queries om de name en address op te halen? Dat kan ook gewoon met eentje. Je kunt zelfs alle informatie over pics 1 en 2 tegelijk ophalen: SELECT * FROM pics WHERE id IN (idpic1, idpic2).

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:50
Ja en dat je dus er van uit gaat dat elk id gebruikt wordt, want zodra je een foto weg zou halen, werkt je script niet meer. (En zoals gezegd, beetje raar script nog)

En waar ging het nou precies fout dan?

  • Soundless
  • Registratie: November 2008
  • Laatst online: 29-10 16:54
Zo te zien heb je besloten om niks te willen leren

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 01-11 21:54
hylke94 schreef op vrijdag 02 november 2012 @ 10:47:
Dat stond anders wel op stackoverflow. En na het verwijderen van de cache werkte alles wel weer ;).
Je browser cached alleen 301 Redirects ,htaccess files worden helemaal niet door je browser gezien. Link naar bron? (Als je tijdens testen gebruik wilt maken van RewriteRules met de [R] flag - die dus redirecten - gebruik dan de 302/303/307 ipv 301)

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Soundless schreef op zaterdag 03 november 2012 @ 19:14:
Zo te zien heb je besloten om niks te willen leren
Al doende leert men he. Dit is een bèta, wat betekent dat de site nog NIET af is.

[ Voor 17% gewijzigd door bibbox3 op 04-11-2012 10:33 ]


  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Barryvdh schreef op vrijdag 02 november 2012 @ 20:07:
Ja en dat je dus er van uit gaat dat elk id gebruikt wordt, want zodra je een foto weg zou halen, werkt je script niet meer. (En zoals gezegd, beetje raar script nog)

En waar ging het nou precies fout dan?
idd, bij het uploaden van de foto's ben ik ook op dit probleem gestuit, mag dus niet met id's werken. Bedankt

  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02-2023
bibbox3 schreef op zondag 04 november 2012 @ 10:29:
[...]

idd, bij het uploaden van de foto's ben ik ook op dit probleem gestuit, mag dus niet met id's werken. Bedankt
Het is juist wel netter om met IDs te werken, op de juiste manier... Lees de tips eens door die gegeven zijn en doe er iets mee.

  • bibbox3
  • Registratie: Maart 2012
  • Laatst online: 22-02-2016
Ja maar bedoel eigenlijk dat ik geen random id's mag gebruiken :)
Pagina: 1