2015-08-17 2 views
0

Моя идея заключается в поисковый запрос, то после того, как нажать кнопку изображение будет перенаправлять на запрос, чтобы преуспеть кодLIKE оператор передает неверный символ в первенствует

вот мой код для кнопки изображения

$expQuery = SELECT * FROM reginformation WHERE name LIKE '%da%' AND deleted = 0; //This is an example query 
<a id="exportbutton" style="margin-left:5px;" href="regListToExcel.php?query=<?php echo $expQuery ?> " ><img src="images/export_to_excel.png" style="margin-left:0px; width:5%" title='Download List'></a> 

код для regListToExcel.php

<?php 
header('Content-type: application/excel');         
header('Content-Disposition: attachment; filename="EventRegistrationLogs('.date("Y-m-d").').xls"'); 
?> 
<html> 
<table border=2> 
<tr> 
<th>Registration ID</th><th>Name</th><th>Gender</th><th>Age</th><th>Birthdate</th><th>Address</th> 
<th>Email Address</th><th>Employment Status</th><th>Contact No.</th><th>Facebook</th> 
<th>Twitter</th><th>Instagram</th><th>Event</th> 
<th>Where did you hear about this event?</th><th>Photo Link</th><th>Province</th><th>Friend's Name</th> 
<th>Friend's Email Address</th><th>Friend's Name</th> 
<th>Friend's Email Address</th><th>Date Registered</th> 
</tr> 
<?php 
include("dbcon.php"); 
$query=$_GET['query']; 
echo "$query"; 
$export = mysql_query($query) or die(mysql_error()); 
$bgcolor = "F6F7EA"; 

      while($data=mysql_fetch_array($export)) 

       { 

        if ($bgcolor == "ECEFD7") 
         { 
         $bgcolor = "F6F7EA"; 
         } 
        else 
         { 
         $bgcolor = "ECEFD7"; 
         } 
        if($data['province'] == "") 
         {   
         $province = ""; 
         } 
        else 
        { 
         $query = "SELECT province FROM province WHERE provid = $data[province]"; 
        $result = mysql_query($query) or die(mysql_error()); 
        $row = mysql_fetch_array($result); 
        $province = $row['province']; 
        } 
      ?> 
        <tr><td width="1000px" style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['regID']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['name']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['gender']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['age']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['bdate']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['address']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['emailadd']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['employmentstatus']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['contactno']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['facebook']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['twitter']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['instagram']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['event']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['wherehearevent']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['photolink']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $province?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['referfriend1']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['referemail1']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['referfriend2']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['referemail2']?></td> 
        <td style="background-color:#<?echo $bgcolor;?>;>"><?php echo $data['date_register']?></td> 
        </tr> 
<?php } ?> 
</table> 
</body> 
</html> 

запроса дает в Эксел
SELECT * FROM reginformation WHERE name LIKE 'Ú%' AND deleted = 0
Как я могу это исправить?

ответ

0

Одна из основных проблем, связанных с этим примером, заключается в том, что запрос не сбрасывается до передачи на последующую страницу.

В частности, стоит использовать функцию «htmlentities» PHP для $ expQuery, а затем проверку того, что передается через запрос. Этот инструмент для браузера, как Firebug, может помочь вам в этом.

Кроме того, ваш код подлежит произвольным атакам SQL-инъекций. Вы должны использовать mysqli_escape_string в своем запросе (и, в идеале, только через части, которые фактически являются динамическими).

+0

Что вы хотите сказать о том, что запрос не ускользнул и использование htmlentities? Не могли бы вы дать мне образец, чтобы понять его яснее? – user3911182

+0

Взгляните: http://stackoverflow.com/questions/6249151/how-to-properly-escape-html-form-input-default-values-in-php В частности, вы просто хотите убедитесь, что ваш запрос выполняется правильно с другой стороны. Вы можете просто сделать: print_r ($ query); die: Чтобы убедиться, что значение верное. Что касается SQL-инъекции, просто подумайте о том, что произойдет, если кто-то отправит запрос в regListToExcel.php с запросом типа: DROP TABLE reginformation; –

+0

Когда я пробовал htmlspecialcharacters, он дал мне этот запрос ** SELECT * FROM reginformation WHERE name LIKE 'ڥ' AND deleted = 0 **, который должен быть ** SELECT * FROM reginformation WHERE name LIKE '% da%' AND deleted = 0 * * – user3911182

Смежные вопросы