PageSourceSearch

https://cheqin.ai/platform/login_guest

html cheqin.ai collected 2026-10-05 13:26:56 UTC 22,713 bytes, 506 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3	<head>
4		<meta charset="UTF-8">
5		<meta http-equiv="X-UA-Compatible" content="IE=edge">
6		<meta name="viewport" content="width=device-width, initial-scale=1.0">
7		<meta name="description" content="cheQin, hotel booking app, bargain for hotel, bargain for stays, bargain for service apartment, bargain for resorts, travel agent bargain.What is cheQin? The cheQin app enables travelers to bargain for hotels and stays. It allows the travelers to post the request and then brings in the top 5 lowest offers by creating healthy competition among the hoteliers. The good news is that hoteliers (or property owners) may access inquiries and can set the optimal pricing taking inventory into account. Both hoteliers and travelers benefit from cheQin. Allowed properties: 2/3/4/5 star hotels, resorts, service apartments, private stays and vacation homes.Hotelier (or Property owner) Registration: Visit https://cheQin.club and select Hotelier from the menu to register. Creating an account just takes 5 minutes. There is no need for any image uploads. Simply register and have your credentials verified. It is that simple. ">
8		<title>CheQIn App - a hotel booking app - Bargain for hotels, service apartments, private homes, vacation stays and more</title>
9		<meta name="Keywords" content= "cheQin, hotel booking app, bargain for hotel, bargain for stays, bargain for service apartment, bargain for resorts, travel agent bargain.">
10
11		<!-- icofont-css-link -->
12		<link rel="stylesheet" href="/cheQinUI_v2/css/icofont.min.css">
13		<!-- Bootstrap-Style-link -->
14		<link rel="stylesheet" href="/cheQinUI_v2/css/bootstrap.min.css">
15		<!-- Aos-Style-link -->
16		<link rel="stylesheet" href="/cheQinUI_v2/css/aos.css">
17		<!-- Coustome-Style-link -->
18		<link rel="stylesheet" href="/cheQinUI_v2/css/style.css">
19		<!-- Responsive-Style-link -->
20		<link rel="stylesheet" href="/cheQinUI_v2/css/responsive.css">
21		<link href="/assets/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>
22		<!-- Favicon -->
23		<link rel="shortcut icon" href="/cheQinUI_v2/images/favicon.png" type="image/x-icon">
24		<link rel="manifest" href="/manifest.json" />
25		
25<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
vendor: 81 bytes, lines 25-27
25
26		<script src="https://www.google.com/recaptcha/api.js" async defer></script>
27		
27<script>
28			var OneSignal = window.OneSignal || [];
29			OneSignal.push(function() {
30				OneSignal.init({
31					appId : "15104e24-c1d0-4cd5-b6a2-495a032efd61",
32				});
33				OneSignal.showNativePrompt();
34			});
35			OneSignal.push(function() {
36				OneSignal.getUserId(function(userId) {
37					$.ajax({
38						type : "GET",
39						url : "/platform/set_onesignal_player/do.json",
40						data : {
41							user_id : userId
42						},
43						dataType : "json",
44						success : function(b) {
45							if (b.success) {
46								return false;
47							}
48						},
49						error : function() {
50							return false;
51						}
52					});
53				});
54			});
55			OneSignal.on('subscriptionChange', function(isSubscribed) {
56				if (isSubscribed) {
57					OneSignal.getUserId(function(userId) {
58						$.ajax({
59							type : "GET",
60							url : "/platform/set_onesignal_player/do.json",
61							data : {
62								user_id : userId
63							},
64							dataType : "json",
65							success : function(b) {
66								if (b.success) {
67									return false;
68								}
69							},
70							error : function() {
71								return false;
72							}
73						});
74					});
75				}
76			});
77		</script>
77
78		<!-- Google Tag Manager -->
79		
79<script>
vendor: 420 bytes, lines 79-90
79
80			(function(w, d, s, l, i) {
81				w[l] = w[l] || [];
82				w[l].push({
83					'gtm.start' : new Date().getTime(),
84					event : 'gtm.js'
85				});
86				var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
87				j.async = true;
88				j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
89				f.parentNode.insertBefore(j, f);
90			})(window, document, 'script', 'dataLayer', '
90GTM-NLPJMKLV
vendor: 6 bytes, lines 90-91
90');
91		
91</script>
91
92		<!-- End Google Tag Manager -->
93
94		<!-- Google Tag Manager (noscript) -->
vendor: 74 bytes, lines 94-96
94
95		<noscript>
96			<iframe src="https://www.googletagmanager.com/ns.html?id=
96GTM-NLPJMKLV
vendor: 91 bytes, lines 96-99
96"
97			height="0" width="0" style="display:none;visibility:hidden"></iframe>
98		</noscript>
99		
99<!-- End Google Tag Manager (noscript) -->
100		
100<script type="text/javascript">
101			(function(c, l, a, r, i, t, y) {
102				c[a] = c[a] ||
103				function() {
104					(c[a].q = c[a].q || []).push(arguments)
105				};
106				t = l.createElement(r);
107				t.async = 1;
108				t.src = "https://www.clarity.ms/tag/" + i;
109				y = l.getElementsByTagName(r)[0];
110				y.parentNode.insertBefore(t, y);
111			})(window, document, "clarity", "script", "iuwthz139t");
112		</script>
112
113	</head>
114
115	<body>
116		
116<script>
117			https://connect.facebook.net/en_US/fbevents.js
118		</script>
118
119		<!-- Page-wrapper-Start -->
120		<div class="page_wrapper">
121			<!-- Preloader -->
122			<div id="preloader">
123				<div id="loader"></div>
124			</div>
125			<div class="full_bg">
126				<section class="signup_section">
127					<div class="container">
128						<div class="top_part">
129							<a href="/" class="back_btn"><i class="icofont-arrow-left"></i> Back to home</a>
130							<a class="small_logo" href="/"> <img src="/cheQinUI_v2/images/logo.png" alt="image"> </a>
131						</div>
132
133						<!-- Sign In Tabs -->
134						<ul class="nav nav-tabs" id="loginTabs" role="tablist">
135							<li class="nav-item">
136								<a class="nav-link active" id="email-tab" data-toggle="tab" href="#email-login" role="tab" aria-controls="email-login" aria-selected="true">Login with Email</a>
137							</li>
138							<li class="nav-item">
139								<a class="nav-link" id="phone-tab" data-toggle="tab" href="#phone-login" role="tab" aria-controls="phone-login" aria-selected="false">Login with Phone & OTP</a>
140							</li>
141						</ul>
142
143						<!-- Tab Content -->
144						<div class="tab-content" id="loginTabContent">
145						<!-- Email Login Tab -->
146						<div class="tab-pane fade show active" id="email-login" role="tabpanel" aria-labelledby="email-tab">
147							<div class="form_block">
148								<div class="form_side">
149									<div class="section_title">
150										<span class="title_badge">Welcome Back</span>
151										<h2><span>Guest</span> Sign in</h2>
152										<p>
153											Sign in to your account
154										</p>
155									</div>
156									<div class="error-message" id="email-error-message"  style="color: red; display: none;">
157										Incorrect password or email
158									</div>
159									<br>
160									<form id="userLoginForm" name="userLoginForm" autocomplete="off" method="post" action="#">
161										<input type="hidden" name="authenticity_token" id="authenticity_token" value="APxkKse0JdpfI+GDXIa7rMHkqMREpgEP8rO/oQDfByrQRBswyJ8G/zCxWVLzGEMZoe4kUp/3nRd7pMm67CMlgQ==" />										<input type="hidden" name="country_code" id="country_code" value="IN"/>
162										<input type="hidden" name="login_type" id="login_type" value="Guest"/>
163										<div class="form-group">
164											<input type="email" id="email-field" name="email" class="form-control" placeholder="Email">
165										</div>
166										<div class="input-group" id="show_hide_password">
167											<input type="password" id="password-field" name="password" class="form-control" placeholder="Password">
168											<div class="input-group-addon"><a href="javascript:void(0)" style="color: #333"><i class="fa fa-eye-slash form-control" aria-hidden="true"></i></a></div>
169										</div>
170										<div class="forgate_check">
171											<div class="coustome_checkbox">
172												<!-- <label for="remamber_check">
173												<input type="checkbox" id="remamber_check">
174												<span class="checkmark"></span>
175												Remember for 30 days
176												</label> -->
177											</div>
178											<a href="/platform/password_reset/guest">Forgot password ?</a>
179										</div>
180										<div class="btn_block">
181											<button class="btn puprple_btn ml-0" id="emailLoginButton">
182												Login
183											</button>
184											<!-- <div class="btn_bottom"></div> -->
185										</div>
186									</form>
187									<br>
188									<div class="sign_in_here">
189										<p style="margin: 0;color: #212529;font-weight: 600;font-size: 18px;">
190											Not registered yet? <a href="/platform/signup_guest">Sign Up here</a>
191										</p>
192									</div>
193								</div>
194								<div class="side_screen">
195									<div class="dotes_blue"><img src="/cheQinUI_v2/images/dotes_download.png" alt="image">
196									</div>
197									<div class="left_icon">
198										<img src="/cheQinUI_v2/images/smallStar.png" alt="image">
199									</div>
200									<div class="right_icon">
201										<img src="/cheQinUI_v2/images/bigstar.png" alt="image">
202									</div>
203									<div class="scrren">
204										<img src="/cheQinUI_v2/images/1loginFrame.png" alt="image">
205									</div>
206								</div>
207							</div>
208						</div>
209
210						<!-- Phone & OTP Login Tab -->
211						<div class="tab-pane fade" id="phone-login" role="tabpanel" aria-labelledby="phone-tab">
212							<div class="form_block">
213								<div class="form_side">
214									<div class="section_title">
215										<span class="title_badge">Welcome Back</span>
216										<h2><span>Guest</span> Sign in</h2>
217										<p>
218											Sign in to your account
219										</p>
220									</div>
221									<div class="error-message" id="error-message"  style="color: red; display: none;">
222										Invalid mobile number
223									</div>
224									<br>
225									<!-- Mobile number input and "Send OTP" button -->
226									<div id="mobile-login-form">
227										<form id="userLoginOTPForm" name="userLoginOTPForm" autocomplete="off" method="post" action="#">
228											<input type="hidden" name="authenticity_token" id="authenticity_token" value="P1KiIpgBF09sALSscX0o6WuaUTENeVAHTt/aROTAdmPv6t04lyo0agOSDH3e49BcC5Ddp9YozB/HyKxfCDxUyA==" />											<input type="hidden" name="country_code" id="country_code" value="IN"/>
229											<input type="hidden" name="login_type" id="login_type" value="Guest"/>
230											<div class="form-group">
231												<div class="input-group">
232													<div class="input-group-prepend">
233														<span class="input-group-text">+91</span>
234													</div>
235													<!-- <div class="form-group">
236													<input type="email" class="form-control" placeholder="Mobile Number">
237													</div> -->
238													<!-- <input type="text" class="form-control" placeholder="Mobile Number"> -->
239													<input type="text" class="form-control" id="mobileNumber" name="mobile_no" onpaste="return false;" placeholder="Mobile Number" oninput="this.value = this.value.replace(/[^0-9]/g, '')">
240												</div>
241												<div class="g-recaptcha" data-sitekey="6LeZRsIqAAAAAEFx7xc8hpMKvfANcR77yGfZR9gt" style="padding-top: 20px;text-align: center;"></div>
242											</div>
243											<div class="btn_block">
244												<button class="btn puprple_btn ml-0" id="sendOTPButton">
245													Send OTP
246												</button>
247											</div>
248										</form>
249									</div>
250									<!-- OTP input and "Login" button -->
251									<div id="otp-login-form" style="display: none;">
252										<form id="OTPSbmtForm" name="OTPSbmtForm" autocomplete="off" method="post">
253											<input type="hidden" name="authenticity_token" id="authenticity_token" value="HvXJ6xNRlXPssanJJ7zav31VPFedPEOD2BZxWlzrJCLOTbbxHHq2VoMjERiIIiIKHV+wwUZt35tRAQdBsBcGiQ==" />											<input type="hidden" name="verify_mode" id="verify_mode" value="login"/>
254											<input type="hidden" name="user_id" id="user_id" value=""/>
255											<input type="hidden" name="login_type" id="login_type" value="Guest"/>
256											<div class="form-group">
257												<!-- <input type="text" class="form-control" placeholder="OTP"> -->
258												<input type="text" class="form-control" id="otp-field" name="otp_code" maxlength="4" placeholder="OTP" oninput="this.value = this.value.replace(/[^0-9]/g, '')">
259											</div>
260											<div class="error-message" id="otp-error-message"  style="color: red; display: none;">
261												Invalid OTP
262											</div>
263											<div class="btn_block">
264												<button class="btn puprple_btn ml-0" id="otpLoginButton">
265													Login
266												</button>
267											</div>
268										</form>
269									</div>
270								</div>
271								<!-- <div class="sign_in_here">
272								<p>Not a member yet? <a href="sign-up.html">Sign Up here</a></p>
273								</div> -->
274								<div class="side_screen">
275									<div class="dotes_blue"><img src="/cheQinUI_v2/images/dotes_download.png" alt="image">
276									</div>
277									<div class="left_icon">
278										<img src="/cheQinUI_v2/images/smallStar.png" alt="image">
279									</div>
280									<div class="right_icon">
281										<img src="/cheQinUI_v2/images/bigstar.png" alt="image">
282									</div>
283									<div class="scrren">
284										<img src="/cheQinUI_v2/images/1loginFrame.png" alt="image">
285									</div>
286								</div>
287							</div>
288						</div>
289					</div>
290				</section>
291			</div>
292		</div>
293		<!-- Page-wrapper-End -->
294
295		<!-- Jquery-js-Link -->
296		
296<script src="/cheQinUI_v2/js/jquery.js"></script>
296
297		<!-- bootstrap-js-Link -->
298		
298<script src="/cheQinUI_v2/js/bootstrap.min.js"></script>
298
299		<!-- aos-js-Link -->
300		
300<script src="/cheQinUI_v2/js/aos.js"></script>
300
301		<!-- main-js-Link -->
302		
302<script src="/cheQinUI_v2/js/main.js"></script>
302
303		
303<script>
304			const mobileLoginForm = document.getElementById("mobile-login-form");
305			const otpLoginForm = document.getElementById("otp-login-form");
306			const sendOTPButton = document.getElementById("sendOTPButton");
307			const otpLoginButton = document.getElementById("otpLoginButton");
308			const emailLoginButton = document.getElementById("emailLoginButton");
309
310			sendOTPButton.addEventListener("click", () => {
311				const mobileNumber = document.getElementById("mobileNumber").value.trim();
312				// Get the mobile number field value
313				const errorElement = document.getElementById("error-message");
314				if (mobileNumber.length === 0) {
315					// Display an error message for an empty mobile number
316					event.preventDefault()
317					errorElement.textContent = "Please enter a mobile number.";
318					errorElement.style.display = "block";
319					return false;
320				} else if (mobileNumber.length !== 10) {
321					// Display an error message for an invalid mobile number
322					event.preventDefault()
323					errorElement.textContent = "Please enter a valid 10-digit mobile number.";
324					errorElement.style.display = "block";
325					return false;
326				} else {
327					event.preventDefault()
328					$("#sendOTPButton").attr('disabled', 'disabled');
329				    var a = '<span style="font-size:18px;color:#241ddc;">Please Wait...<img src="/images/loading.gif" id="loading" alt="Loading" height="18px;" title="Loading" /></span>';
330				    $("#error-message").html(a);
331				    $("#error-message").show();
332				    $.ajax({
333				        type: "POST",
334				        url: "/users/login_signup.json",
335				        data: $("#userLoginOTPForm").serialize(),
336				        dataType: "json",
337				        success: function(b) {
338				            if (b.success) {
339				            	if(b.is_user_present && b.is_signup_complete){
340				            		console.log("user is present... and sign up complete");
341				            		//show enter OTP screen
342				            		// Valid mobile number, proceed to send OTP
343				            		$("#verify_mode").val("login");
344				            		$("#user_id").val(b.user_id);
345									errorElement.style.display = "none";
346									mobileLoginForm.style.display = "none";
347									otpLoginForm.style.display = "block";
348									return false;
349				            	}else{
350			            			//show guest signup screen
351				            		window.location.href = "/platform/signup_guest/"+b.user_id
352				            		return false;
353			            		
354				            	}
355				            } else {
356				            	message = '<span style="font-size:18px;color:#e70505;">';
357				            	message += b.msg;
358				            	message += '</span>';
359				                $("#error-message").html(message);
360				                $("#sendOTPButton").removeAttr('disabled');
361				                return false;
362				            }
363				        },
364				        error: function() {
365				        	message = '<span style="font-size:18px;color:#e70505;">';
366				           	message += 'Error while validating your mobile, Please try again.';
367				            message += '</span>';
368				            $("#error-message").html(message);
369				            $("#sendOTPButton").removeAttr('disabled');
370				            return false;
371				        }
372				    });
373				}
374			});
375			otpLoginButton.addEventListener("click", () => {
376				// mobileLoginForm.style.display = "none";
377				// otpLoginForm.style.display = "block";
378				const otpValue = document.getElementById("otp-field").value.trim();
379				// Get the mobile number field value
380				const errorElement = document.getElementById("otp-error-message");
381				if (otpValue.length !== 4) {
382					// Valid mobile number, proceed to send OTP
383					event.preventDefault()
384					errorElement.textContent = "Please enter a valid OTP.";
385					errorElement.style.display = "block";
386				} else {
387					// Successful OTP validation
388					event.preventDefault()
389					$("#otpLoginButton").attr('disabled', 'disabled');
390				    var a = '<span style="font-size:18px;color:#241ddc;">Please Wait...<img src="/images/loading.gif" id="loading" alt="Loading" height="18px;" title="Loading" /></span>';
391				    $("#otp-error-message").html(a);
392				    $("#otp-error-message").show();
393				    $.ajax({
394				        type: "POST",
395				        url: "/users/login_signup_action.json",
396				        data: $("#OTPSbmtForm").serialize(),
397				        dataType: "json",
398				        success: function(b) {
399				            if (b.success) {
400				            	//$("#signup_signin").removeAttr('disabled');
401				            	message = '<span style="font-size:18px;color:#04651a;">';
402					           	message += b.msg;
403					            message += '</span>';
404					            $("#otp-error-message").html(message);
405					            if (b.user_type == "admin")
406									window.location.href = "/admins/dashboard/dashboard"
407								else
408									window.location.href = "/user_requests"	
409					        } else {
410				                message = '<span style="font-size:18px;color:#e70505;">';
411					           	message += b.msg;
412					            message += '</span>';
413				                $("#otp-error-message").html(message);
414				                $("#otpLoginButton").removeAttr('disabled');
415				                return false;
416				            }
417				        },
418				        error: function() {
419				        	message = '<span style="font-size:18px;color:#e70505;">';
420				           	message += 'Error while validating your mobile, Please try again.';
421				            message += '</span>';
422				            $("#otp-error-message").html(message);
423				            $("#otpLoginButton").removeAttr('disabled');
424				            return false;
425				        }
426				    });
427				    return false;
428				}
429			});
430			emailLoginButton.addEventListener("click", () => {
431				const errorElement = document.getElementById("email-error-message");
432				const email = document.getElementById("email-field").value.trim();
433				// Get the mobile number field value
434				const password = document.getElementById("password-field").value.trim();
435				// Get the mobile number field value
436
437				if (email.length === 0 || password.length === 0) {
438					event.preventDefault()
439					// Display an error message for empty email or password fields
440					errorElement.textContent = "Please enter both email and password.";
441					errorElement.style.display = "block";
442				} else {
443					event.preventDefault()
444					$("#emailLoginButton").attr('disabled','disabled');
445				     var a = '<span style="font-size:18px;color:#241ddc;">Please Wait...<img src="/images/loading.gif" id="loading" alt="Loading" height="18px;" title="Loading" /></span>';
446				    $("#email-error-message").html(a);
447				    $("#email-error-message").show();
448				    $.ajax({
449				        type : "POST",
450				        url : "/platform/login_method.json",
451				        data : $("#userLoginForm").serialize(),
452				        dataType : "json",
453				        success : function(b) {
454				            if(b.success) {
455				                a = '<span style="font-size:18px;color:#241ddc;">Login Successful. Redirecting...</span>';
456				                $("#email-error-message").html(a);
457				                window.location = b.url;
458				                return false;
459				            }else if(b.msg == "The email or password you entered is incorrect"){
460				                a = '<span style="font-size:18px;color:#e70505;">'+b.msg+' <br/>Please use <a href="#" class="reset" style="color:#007bff;" onclick="window.location.href=\'/platform/password_reset\'">Forgot Password</a></div>';
461				                $("#email-error-message").html(a);
462				                $("#emailLoginButton").removeAttr('disabled');
463				                return false;
464				            }else{
465				            	a = '<span style="font-size:18px;color:#e70505;">'+b.msg+'</span>';
466				                $("#email-error-message").html(a);
467				                $("#emailLoginButton").removeAttr('disabled');
468				                return false;
469				            }
470				        },
471				        error : function() {
472				            a = '<span style="font-size:18px;color:#e70505;">There was an error while login.</span>';
473				            $("#email-error-message").html(a);
474				            $("#emailLoginButton").removeAttr('disabled');
475				            return false;
476				        }
477				    });
478				}
479			});
480			$("#show_hide_password a").on('click', function(event) {
481		        event.preventDefault();
482		        if($('#show_hide_password input').attr("type") == "text"){
483		            $('#show_hide_password input').attr('type', 'password');
484		            $('#show_hide_password i').addClass( "fa-eye-slash" );
485		            $('#show_hide_password i').removeClass( "fa-eye" );
486		        }else if($('#show_hide_password input').attr("type") == "password"){
487		            $('#show_hide_password input').attr('type', 'text');
488		            $('#show_hide_password i').removeClass( "fa-eye-slash" );
489		            $('#show_hide_password i').addClass( "fa-eye" );
490		        }
491		    });
492		    $(document).ready(function(){
493			 var userAgent = navigator.userAgent || navigator.vendor || window.opera;
494			 console.log("user agent: "+userAgent)
495			    // Redirect to Google Play for Android devices
496			    if (/android/i.test(userAgent)) {
497			        window.location.href = "https://play.google.com/store/apps/details?id=com.cheqinapp.booking";
498			    }
499			    // Redirect to Apple Store for iOS devices
500			    else if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
501			        window.location.href = "https://apps.apple.com/us/app/cheqin-bargain-for-hotel-stay/id6443889147";
502			    }
503			});
504		</script>
504
505	</body>
506</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.